1
在使用Excel时,如果我计算6/100得到它返回0.060000 的百分比值,但是当我做在Objective-C同样的计算,我得到0.059999998658895493奇怪的计算结果的Objective-C
有谁知道为什么会出现是不同的?
在使用Excel时,如果我计算6/100得到它返回0.060000 的百分比值,但是当我做在Objective-C同样的计算,我得到0.059999998658895493奇怪的计算结果的Objective-C
有谁知道为什么会出现是不同的?
浮点值不能准确表示所有分数。这与我们用小数点中的一些数字看到的相同的行为1/3不能完全用十进制表示,它仅近似为0.33333333 ...
计算机分数是基数2,其中我们的十进制数是基数10。不同的分数可以在不同的基础上完全准确地表示。
因此有可可若干类,NSDecimalNumber
操作设基地10,并且可以完全代表6/100为0.060000
您在Excel中看到可能的差异可能是因为其使用十进制数学(可能不会),或者它正在四舍五入以便显示不准确不明显。
这不是特定于Objective-C的。您可能需要仔细阅读:基本上,0.06不能完全使用“float”表示,因此您会看到它可以得到最接近的。 –
2012-02-14 11:01:24
另外,Excel很可能在骗你。请注意,如果您在C小数点后六位取得数字,您会得到与Excel给出的结果相同的结果。 – 2012-02-14 11:02:54
请参考此答案:http://stackoverflow.com/questions/8758156/rounding-double-values-in-c-like-ms-excel-does-it – BeRecursive 2012-02-14 11:05:01