前端进阶之路 0.1+0.2 !== 0.3?

238 阅读1分钟

因为JavaScript采用的是IEEE 754语言规范导致的问题,小数计算并不十分精确,如何解决小数精确的问题:

设置一个误差范围值:机器精度

es6之前

if (!Number.EPSILON) {
     Number.EPSILON = Math.pow(2, -52);
}
function numbersCloseEnoughToEqual(a, b) {
     return Math.abs(a - b) < Number.EPSILON
}


es6之后,将这个误差范围值设置Number.EPSILON中,可以直接使用;