可能重複:
Is JavaScript's Math broken?
Strange result with floating point additionJavascript數學不精確錯誤? (0.1 + 0.01 + 0.01 + 0.01 + 0.01 + 0.01 == 0.15000000000000002)
在Safari 5.0.6但一些簡單的JavaScript計算的Firefox中的相同現象:
var i=0.1;
i=i+0.01; //= 0.11
i=i+0.01; //= 0.12
i=i+0.01; //= 0.13
i=i+0.01; //= 0.14
i=i+0.01; // expected == 0.15
console.log(i); // == 0.15000000000000002
這種不精確性來自哪裏?
當然,我可以用i.toPrecision()
或其他方法處理它,但是它必須是這樣嗎?這是一個浮點舍入錯誤?
同樣的情況,在這個例子中:
var i=0.14+0.01; //expected == 0.15
console.log(i); //== 0.15000000000000002
什麼是0.14和0.15之間發生了什麼?
var i=0.1400001+0.01; //expected==0.1500001
console.log(i); //== 0.1500001 ok!
和
var i=0.14000001+0.01; //expected==0.15000001 !!
console.log(i); //== 0.15000001000000002
什麼我必須做的不同,以得到正確的結果?
歡迎來到用二進制表示浮點數的世界。 – birryree 2011-12-22 05:41:54
http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html所以這是一個問題,通過存儲數據來計算n位數字? – frank 2011-12-22 05:42:58
您可以使用'0.1 + 0.2'更簡潔地重現相似的效果,這會導致'0.30000000000000004'。 – 2011-12-22 05:43:24