2013-12-17 34 views
2

好吧,我只是有一個問題,用簡單的下面的代碼:動作數加減法,行爲怪異

trace(0.01+0.05); // 0.060000000000000005 
trace(0.03-0.01); // 0.019999999999999997 

我的意思,我只想0.01 + 0.05給我0.06和0.03-0.01給我0.02。 有人有一個想法如何檢索正確的結果?

+0

可能重複的[JavaScript的浮點數學破碎?](http://stackoverflow.com/questions/588004/is-javascripts-floating-point-math-broken) – dan04

回答

1

不精確性是由於浮點算術。 0.01,0.05和0.03都是浮點文字。並非每個數字(實際上只有很少數字)都可以用浮點精確表示。

例如,0.5可以是,但0.06不能。作爲一個經驗法則,前15個有效數字是正確的。

有關更多細節,參見http://en.wikipedia.org/wiki/Floating_point

+1

好的,謝謝我會去int和除以100來顯示,因爲我只是想要精確度爲2. –

+1

這是解決問題的一種非常常見的方式。順便說一下,你在模擬錢嗎?如果是這樣,則使用貨幣類型(如果可用)。 – Bathsheba

-1

跟蹤(Math.format((0.01 + 0.05),2));