繁体   English   中英

Objective-C Float Rounding

[英]Objective-C Float Rounding

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

例:

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

应打印“圆形浮子是46”

使用C标准函数系列round() roundf()表示floatround()表示doubleroundl()表示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);

在objective-c中lroundf浮点数的最简单方法是lroundf

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

对于round 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

如果你想要整数下面的圆形浮点数值是在目标C中舍入浮点值的简单方法。

int roundedValue = roundf(Your float value);

查看rint()的手册页

让我们尝试和结帐

//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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM