0.1+0.2不等于0.3

浮點數值的最高精度是 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,那么測試將無法通過。因此,永遠不 要測試某個特定的浮點數值。

關于浮點數值計算會產生舍入誤差的問題,有一點需要明確:這是使用基于
IEEE754 數值的浮點計算的通病,ECMAScript 并非獨此一家;其他使用相同數值格式的語言也存在這個問題。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容