永遠不要測試某個特定的浮點數值

Javascript的數字類型是以64位的IEEE 754格式存儲的
浮點數值計算會產生舍入誤差的問題,這是使用基於IEEE754 數值的浮點計算的通病

浮點數值的最高精度是 17 位小數,但在進行算術計算時其精確度遠遠不如整數。例如,0.1 加 0.2的結果不是 0.3,而是 0.30000000000000004。這個小小的舍入誤差會導致無法測試特定的浮點數值。

例如:

// 不要做這樣的測試!
if (a + b == 0.3){	
 alert("You got 0.3."); 
}

在這個例子中,我們測試的是兩個數的和是不是等於 0.3。如果這兩個數是 0.05 和 0.25,或者是 0.15和 0.15 都不會有問題

// 因爲在這裏 
0.1+0.2 != 0.3  
1.1+1.3 != 2.4
發佈了90 篇原創文章 · 獲贊 94 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章