2011-04-08 30 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