关于0.1+0.2和0.3是否相等的判断及误差范围值的设置

现象:js中判断 0.1+0.2 === 0.3 的结果为false

如何判断 0.1+0.2 和 0.3 相等呢

常见方法1:设置一个误差范围值,通常称为“机器精度”,对js的数字来说,这个值通常是2^-52(2.220446049250313e-16)。

ES6中,该值定义在Number.EPSILON中。可以直接使用。ES6之前版本可以写polyfill:

if (!Number.EPSILON) {

  Number.EPSILON = Math.pow(2,-52);

}

使用为:

function numbersCloseEnoughToEqual(arg1, arg2) {

  return Math.abs(Arg1, arg2) < Number.EPSILON;

}

常见方法2:将两边的参数值变成整数后进行比较

例:判断0.1+0.2和0.3是否相等,可将值扩大为1+2和3是否相等

posted on 2021-04-11 17:38  shenhf  阅读(250)  评论(0编辑  收藏  举报

导航