Objective-C浮点四舍五入

我怎样才能将一个浮点数四舍五入到Objective-C中最接近的整数:

例:

float f = 45.698f; int rounded = _______; NSLog(@"the rounded float is %i",rounded); 

应该打印“圆形的浮标是46”

推荐的方法是在这个答案: https : //stackoverflow.com/a/4702539/308315


原始答案:

在添加0.5后将其转换为int。

所以

 NSLog (@"the rounded float is %i", (int) (f + 0.5)); 

编辑:你要求的方式:

 int rounded = (f + 0.5); NSLog (@"the rounded float is %i", rounded); 

使用C标准函数族round()roundf()floatround()doubleroundl()long double 。 然后,您可以将结果转换为您select的整数types。

在objective-c中对一个float进行四舍五入的最简单的方法是lroundf

 float yourFloat = 3.14; int roundedFloat = lroundf(yourFloat); NSLog(@"%d",roundedFloat); 

检查rint()的手册页

如果你想要在下面的整数中循环浮点值,那么就是在目标C中四舍五入浮点值的简单方法。

 int roundedValue = roundf(Your float value); 
  //Your Number to Round (can be predefined or whatever you need it to be) float numberToRound = 1.12345; float min = ([ [[NSString alloc]initWithFormat:@"%.0f",numberToRound] floatValue]); float max = min + 1; float maxdif = max - numberToRound; if (maxdif > .5) { numberToRound = min; }else{ numberToRound = max; } //numberToRound will now equal it's closest whole number (in this case, it's 1) 

对于从最接近的整数开始,使用roundf()

 roundf(3.2) // 3 roundf(3.6) // 4 

你也可以使用ceil()函数总是从float获得较高的值。

 ceil(3.2) // 4 ceil(3.6) // 4 

而对于最低价值floor()

 floorf(3.2) //3 floorf(3.6) //3