2012-12-08 41 views
2

可能重複:
Is JavaScript’s Floating-Point Math Broken?地理解JavaScript parseFloat行爲

注意 - 我已經在parseFloat()讀取的其他職位,但我還沒有找到一個很好的解釋,爲什麼這個問題發生。 (或者我只是不理解它)。

此代碼...

var sum = parseFloat("1.001") + parseFloat(".001"); 

alert(parseFloat(sum));​ 

輸出...

1.0019999999999998 

我讀過,加入sum.toFixed(2)將只包含2位小數。

但是,我不會100%理解爲什麼這個長十進制會發生。

parseFloat(sum)代表sum二進制嗎?如果是這樣,那麼1.001不能用二進制表示,因爲1/2^x + ...不能等於.001或1/1000。

+0

感謝你的鏈接 –

回答

2

這不是特定於Javascript,而是內部代表IEEE Floating Point Numbers如何導致精度錯誤。

我不會重現這裏的內容,但有一堆資源可以幫助解釋你的例子中發生了什麼。

這裏是一個:http://www.petebecker.com/js/js200006.html

+1

[「是什麼每個程序員應該知道浮點」(http://floating-point-gui.de/) –