JavaScript 中階
在 JavaScript 中 0.1 + 0.2 會是多少?為什麼?如何避免相關問題?
0.1 + 0.2 的結果
0.1 + 0.2 === 0.3 // false
0.1 + 0.2 // 0.30000000000000004
為什麼?
JavaScript 使用 IEEE 754 雙精度浮點數(64-bit)。0.1 和 0.2 無法精確表示為有限二進位小數,相加後有捨入誤差。
0.1→0.0001100110011...(二進位循環)0.2→0.0011001100110011...(二進位循環)
如何解決?
1. 使用 epsilon 比較
Math.abs(0.1 + 0.2 - 0.3) < Number.EPSILON // true
2. 轉為整數計算
(0.1 * 10 + 0.2 * 10) / 10 // 0.3
3. 使用 toFixed()
parseFloat((0.1 + 0.2).toFixed(10)) // 0.3
4. 使用高精度套件
如 decimal.js 或 big.js。
✦ AI 模擬面試
輸入你的答案,AI 即時分析精準度與改進空間
登入後即可使用 AI 評分
