美文网首页
JavaScript中判断两数之和是否等于第三个数

JavaScript中判断两数之和是否等于第三个数

作者: 470d98b91bd3 | 来源:发表于2020-11-07 23:05 被阅读0次

相信下面一个方法是绝大多数人都会写到的

function judgeEqual(num1, num2, total) {
return num1 + num2 === total
}

然后如果单元测试为


judgeEqual(1, 2, 3);   // true

judgeEqual(0.1, 0.2, 0.3); // false

其实这个问题我们在学JavaScript的时候就知道0.1 + 0.2 并不等于 0.3;因为二进制浮点数中的0.1跟0.2并不是十分精确,他们想加的结果并非等于0.3,而是一个比较接近的数字0.30000000000000004

那么我们应该怎么判断使得在JavaScript中让数学上的 0.1 + 0.2 = 0.3 成立呢

最常见的方法就是设置一个误差范围值,通常称之为“机器精度”, (machine epsilon),对JavaScript来说,这个值通常为2^-52

从ES6开始,该值定义在Number.EPSILON中,我们可以直接拿来用,也可以为ES6之前的版本写polyfill


if (!Number.ESPILON) {
  Number.ESPILON = Math.pow(2, -52);
}

function numbersCloseEnoughToEqual(n1, n2) {
  return Math.abs(n1 - n2) < Number.EPSILON;

}

var a = 0.1 + 0.2;
var b = 0.3

numbersCloseEnoughToEqual(a, b); // true

本篇内容来源于《YOU DON'T KNOW JAVASCRIPT II》

打算做一个读书笔记,就这里开始吧

相关文章

网友评论

      本文标题:JavaScript中判断两数之和是否等于第三个数

      本文链接:https://www.haomeiwen.com/subject/sdqcbktx.html