浮点数精度问题
有关浮点数的精度是一个老生常谈的问题了。
面试题中这个知识点出现的频率非常高:
0.1 + 0.2 === 0.3 // false
其中可以参阅 数字 章节。
这个问题很少会有面试官进一步的进行考察,如 “怎样让计算结果正确”,最常见的解决方案有两个:
- 计算过程中将数字转成整数计算
- 使用第三方库
第一个方案很好理解,将 0.1 与 0.2 扩大 10 倍,相加后再相除就得到了正确的结果:
((0.1 * 10) + (0.2 * 10)) / 10 === 0.3 // true
如果存在两位小数,则同时放大 100倍
,计算后再缩小 100倍
就可以了。
第二个方案可以有很多选择,这里列出了几个常用的第三方库: