可能是重复内容:
如何四舍五入浮点数的NSNumberFormatter类
目前,我使用以下方式计算比例因子:
CGFloat scale = CGContextGetCTM(context).a;
NSLog(@"SCALE : %f", scale);
我收到的浮点数为:0.124979、0.249958、0.499917。如何使用roundf函数将其转换为分别为0.125、0.250、0.500的数值?
可能是重复内容:
如何四舍五入浮点数的NSNumberFormatter类
目前,我使用以下方式计算比例因子:
CGFloat scale = CGContextGetCTM(context).a;
NSLog(@"SCALE : %f", scale);
尝试这个……
NSLog(@"SCALE : %.3f", scale);
NSString *value = [NSString stringWithFormat:@"%.3f", theFloat];
从之前的SO答案中窃取
if ( foo == 1.5 )
它就失败了。对我来说,这似乎是个错误,但网上有关于这样做“正确”的长篇描述。在我看来,这似乎是象牙塔正确,而在现实世界中却毫无用处。
所以,有些可能性。我想知道是否将其乘以1000,将其四舍五入为整数值,然后再除以1000会起作用……当然,相同的IEEE浮点错误(抱歉,是规范)可能仍然会影响你……这值得一试。
让我好奇并写了一个快速测试:
CGFloat foo = 0.124979;
NSLog(@"foo is: %f", foo );
NSInteger ifoo = ceil(foo * 1000.0);
foo = ifoo / 1000.0;
NSLog( @"ifoo is: %d, and back to foo is: %f", ifoo, foo );
在模拟器中,这将输出:
test[5127:207] foo is: 0.124979
test[5127:207] ifoo is: 125, and back to foo is: 0.125000
这样可能会达到你想要的效果。
祝好运。