【发布时间】:2011-06-09 19:11:29
【问题描述】:
如何在 Objective-C 中将浮点数舍入到最接近的整数:
例子:
float f = 45.698f;
int rounded = _______;
NSLog(@"the rounded float is %i",rounded);
应该打印“四舍五入的浮点数是 46”
【问题讨论】:
标签: iphone objective-c ios floating-point rounding
如何在 Objective-C 中将浮点数舍入到最接近的整数:
例子:
float f = 45.698f;
int rounded = _______;
NSLog(@"the rounded float is %i",rounded);
应该打印“四舍五入的浮点数是 46”
【问题讨论】:
标签: iphone objective-c ios floating-point rounding
使用 C 标准函数系列 round()。 roundf() 用于float,round() 用于double,roundl() 用于long double。然后,您可以将结果转换为您选择的整数类型。
【讨论】:
推荐的方式在这个答案中: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);
【讨论】:
将float 舍入到最接近的整数使用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
【讨论】:
在objective-c中对浮点数进行四舍五入的最简单方法是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)
【讨论】: