'Number.EPSILON',值为2^-52,约等于2.2e-16,浮点数运算的过程中,如果误差小于这个数值,可以认为误差是不存在的,所以说第17位上的小数,其实没有意义。 var a=0.12345678901234567 var b=0.12345678901234566 function eq(){ return Math.abs(a-b)<Number.EPSILON; } eq(a,b)//true
ECMAScript Number 是使用 IEEE754 格式来表示整数和浮点数,浮点数的最高精度为 17 位小数。
深入研究,就去参考 Humphry 的文章吧。