2011-04-08 28 views

回答

139

除了其他答案:

float theFloat = 1.23456; 
int rounded = roundf(theFloat); NSLog(@"%d",rounded); 
int roundedUp = ceil(theFloat); NSLog(@"%d",roundedUp); 
int roundedDown = floor(theFloat); NSLog(@"%d",roundedDown); 
// Note: int can be replaced by float 

四舍五入至小数点具体,看到亚历克斯Kazaev提到的问题。

+1

您应该使用'roundf'而不是'lroundf'来在没有警告的情况下投射到'int'。由于编辑的最小字符更改限制,我无法编辑您的帖子。 – ersentekin 2015-04-09 13:00:45

18

功能lroundf()将做到这一点:

float a=20.49; 
int myInt = lroundf(a); 
+1

如果a的值大于20.5,该怎么办? – ios 2011-04-08 11:43:00

+3

没有。 lroundf(a)给你喜欢如果价值是20.75那么它变成21并且如果价值是20.45那么它变成20 ...意味着超过20.5然后它将变成21其他20. 20) – 2011-04-08 12:17:17

1

转换成int,然后转换回浮动。

CGFloat *myFloat = 100.765; 
NSInteger *myInteger = myFloat; 
CGFloat *newFloat = myInteger; 

这将工作

+0

这是截断(floor/ceil)不是四舍五入。 – xaphod 2015-06-14 22:48:55