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