有關JS小數運算精度問題的講解

我們可能在平時運算過程中碰到以下類似情況:

0.1 + 0.2 結果是 0.30000000000000004

0.0003 * 10 結果是 0.0029999999999999996

0.003 / 10 結果是 0.00030000000000000003

原因在於:在計算機內部,使用二進制浮點數並不能準確地表示像 0.1, 0.2 或 0.3 這樣的數字,所以當編碼或解釋代碼時,像“0.1”其實已經舍入為與0.1最接近的數字,即使在計算發生之前已經會導致小的舍入誤差(是的,所有語言都是這樣)

如果不想看到這些額外的小數位數:在顯示時,我們可以用toFixed()或toPrecision() 之類將結果格式化為固定的小數位數

toFixed(num)可把 Number 四舍五入為指定小數位數的數字

toPrecision(num)可在對象的值超出指定位數時將其轉換為指數計數法

You May Also Like