很多前端都知道js有个有意思的知识点:“0.1+0.2 !== 0.3” ,很多面试官也会提到这个问题,归根到底还是js在运算的时候精度丢失导致的。

所以在用js运算的时候,要么转成16进制进行运算后再转回10进制,要么就用第三方插件解决js小数运算的精度丢失的问题。

这里总结一个函数,用来判断两个小数是否相等?

代码:

function epsEqu(x,y) {  
  return Math.abs(x - y) < Math.pow(2, -52);
}

或者

function epsEqu(x,y) {  
  return Math.abs(x - y) < Number.EPSILON;
}

这样就可以解决这个历史遗留问题了

epsEqu(0.1 + 0.2, 0.3) // true

以上就是js判断小数是否相等的方法,原理就是10进制js计算有偏差,然后取其上线,把误差包含进去,真是令人头大的问题!