javascript判断小数是否相等?
七娃博客167人阅读
很多前端都知道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计算有偏差,然后取其上线,把误差包含进去,真是令人头大的问题!
评论 | 0 条评论
登录之后才可留言,前往登录