如何解决0.1+0.2不等于0.3的问题
为何会出现此问题?
总结一句话:这是因为二进制模拟十进制进行运算时的精度问题。
具体可查看 0.1 + 0.2 不等于 0.3?为什么 JavaScript 有这种“骚”操作? 这篇掘金文章。
如何解决
Number.EPSILON
第一种方法是利用 Number.EPSILON
,这个值无限接近于 0。0.1+0.2 的精度误差在这个值的范围内:
1 | function numbersEqual(a,b){ |
内置函数 toFixed
利用 parseFloat
+ 内置函数 toFixed:
1 | function formatNum(num, fixed = 10) { |
内置函数 toPrecision
我平常用此函数来计算精度,具体可参考 Number.prototype.toPrecision() | MDN:
1 | // 内置函数toPrecision(中文:精确,精度) |