奇怪的计算结果Objective-c

时间:2012-02-14 10:57:18

标签: objective-c

当我使用excel时,如果我计算6/100来获得百分比值,则返回0.060000 但是当我在objective-c中进行相同的计算时,我得到0.059999998658895493

有谁知道为什么会有区别?

1 个答案:

答案 0 :(得分:4)

浮点值不能完全代表所有小数。这与我们在十进制中看到的一些数字相同,1/3不能用十进制精确表示,它只能近似为0.33333333 ......

计算机分数是基数2,其中我们的十进制数是10。不同的分数可以在不同的基础上完全准确地表示。

因此,Cocoa中有一个类,NSDecimalNumber以10为基数运算,可以代表6/100,完全为0.060000

您在Excel中看到的差异可能是因为它使用的是十进制数学(可能不是),或者是为了使数字四舍五入,因此显示不准确性不明显。