简化问题:
我有一个 float 0.02275
,当我将它四舍五入到小数点后 4 位时,0.0228
我得到的不是预期的0.0227
. 我知道发生这种情况是因为 的浮点值0.02275
类似于0.0227499999999999...
,当四舍五入到小数点后 4 位时给出0.0227
。
float a = 0.02275;
NSLog(@"float a is %f",a);
NSLog(@"float a, rounded to 4 decimal places is %0.4f",a);
NSLog(@"float a, rounded to 10 decimal places is %0.10f",a);
给出输出
float a is 0.022750
float a, rounded to 4 decimal places is 0.0227
float a, rounded to 10 decimal places is 0.0227499995
我的问题是:我如何正确地四舍五入得到0.0228
而不是0.0227
?
实际情况的局限性:
浮点数取自 plist 文件;NSNumber floatValue
在将其分配给变量时使用a
。
我的程序是处理金钱和百分比。货币价值是用户输入的,百分比是固定的,或者是用户输入的。上面示例中的浮点数是导致我的计算不准确的百分比值之一。