浮點數精度問題
有關浮點數的精度是一個老生常談的問題了。
面試題中這個知識點出現的頻率非常高:
0.1 + 0.2 === 0.3 // false
其中可以參閱 數字 章節。
這個問題很少會有面試官進一步的進行考察,如 “怎樣讓計算結果正確”,最常見的解決方案有兩個:
- 計算過程中將數字轉成整數計算
- 使用第三方庫
第一個方案很好理解,將 0.1 與 0.2 擴大 10 倍,相加后再相除就得到了正確的結果:
((0.1 * 10) + (0.2 * 10)) / 10 === 0.3 // true
如果存在兩位小數,則同時放大 100倍
,計算后再縮小 100倍
就可以了。
第二個方案可以有很多選擇,這里列出了幾個常用的第三方庫: