当我使用excel时,如果我计算6/100来获得百分比值,则返回0.060000 但是当我在objective-c中进行相同的计算时,我得到0.059999998658895493
有谁知道为什么会有区别?
答案 0 :(得分:4)
浮点值不能完全代表所有小数。这与我们在十进制中看到的一些数字相同,1/3不能用十进制精确表示,它只能近似为0.33333333 ......
计算机分数是基数2,其中我们的十进制数是10。不同的分数可以在不同的基础上完全准确地表示。
因此,Cocoa中有一个类,NSDecimalNumber
以10为基数运算,可以代表6/100,完全为0.060000
您在Excel中看到的差异可能是因为它使用的是十进制数学(可能不是),或者是为了使数字四舍五入,因此显示不准确性不明显。