2012-02-14 105 views
1

在使用Excel時,如果我計算6/100得到它返回0.060000 的百分比值,但是當我做在Objective-C同樣的計算,我得到0.059999998658895493奇怪的計算結果的Objective-C

有誰知道爲什麼會出現是不同的?

+4

這不是特定於Objective-C的。您可能需要仔細閱讀:基本上,0.06不能完全使用「float」表示,因此您會看到它可以得到最接近的。 – 2012-02-14 11:01:24

+3

另外,Excel很可能在騙你。請注意,如果您在C小數點後六位取得數字,您會得到與Excel給出的結果相同的結果。 – 2012-02-14 11:02:54

+0

請參考此答案:http://stackoverflow.com/questions/8758156/rounding-double-values-in-c-like-ms-excel-does-it – BeRecursive 2012-02-14 11:05:01

回答

4

浮點值不能準確表示所有分數。這與我們用小數點中的一些數字看到的相同的行爲1/3不能完全用十進制表示,它僅近似爲0.33333333 ...

計算機分數是基數2,其中我們的十進制數是基數10。不同的分數可以在不同的基礎上完全準確地表示。

因此有可可若干類,NSDecimalNumber操作設基地10,並且可以完全代表6/100爲0.060000

您在Excel中看到可能的差異可能是因爲其使用十進制數學(可能不會),或者它正在四捨五入以便顯示不準確不明顯。