关于js浮点数计算的判断
0.1+0.2==0.3
false
0.1+0.2<Number.EPSILON
false
(0.1+0.2-0.3)<Number.EPSILON
true
// 以上结果我们可以看出,由于js计算的精度问题,在判断浮点数时我们不能使用常规的计算方式来判断,而是采用ES6的新属性Number.EPSILON来判断
ES6中Number.EPSILON提供了一种解决办法。ES6 在Number对象上面,新增一个极小的常量Number.EPSILON。根据规格,它表示 1 与大于 1 的最小浮点数之间的差。
对于 64 位浮点数来说,大于 1 的最小浮点数相当于二进制的1.00…001,小数点后面有连续 51 个零。这个值减去 1 之后,就等于 2 的 -52 次方。
Number.EPSILON===Math.pow(2,-52)