好吧,我只是有一個問題,用簡單的下面的代碼:動作數加減法,行爲怪異
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。 有人有一個想法如何檢索正確的結果?
好吧,我只是有一個問題,用簡單的下面的代碼:動作數加減法,行爲怪異
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.01,0.05和0.03都是浮點文字。並非每個數字(實際上只有很少數字)都可以用浮點精確表示。
例如,0.5可以是,但0.06不能。作爲一個經驗法則,前15個有效數字是正確的。
好的,謝謝我會去int和除以100來顯示,因爲我只是想要精確度爲2. –
這是解決問題的一種非常常見的方式。順便說一下,你在模擬錢嗎?如果是這樣,則使用貨幣類型(如果可用)。 – Bathsheba
跟蹤(Math.format((0.01 + 0.05),2));
可能重複的[JavaScript的浮點數學破碎?](http://stackoverflow.com/questions/588004/is-javascripts-floating-point-math-broken) – dan04