1. 程式人生 > >在js中為什麼0.1+0.2不等於0.3

在js中為什麼0.1+0.2不等於0.3

0.1+0.2==0.3
// false

原因在於計算機內部儲存資料的編碼的時候,0.1在計算機內部根本就不是精確的0.1,而是一個有舍入誤差的0.1。當代碼被編譯或解釋後,0.1已經被四捨五入成一個與之很接近的計算機內部數字,以至於計算還沒開始,一個很小的舍入錯誤就已經產生了。這也就是 0.1 + 0.2 不等於0.3 的原因。

如何避免這樣的問題?

通常的解決辦法 就是 把計算數字 提升 10 的N次方 倍 再 除以 10的N次方。一般都用 1000 就行了。

(0.1*1000+0.2*1000)/1000==0.3
//true

另外要注意,不是所有浮點數都有舍入誤差。二進位制能精確地表示位數有限且分母是2的倍數的小數,比如0.5,0.5在計算機內部就沒有舍入誤差。所以0.5 + 0.5 === 1