使用JavaScript中的Number()函数比较两个数字的相等性

13

当我使用JavaScriptNumber()函数比较两个数字时,对于相等的数字,它会返回false值。但是,大于(" > ")和小于(" < ")操作会返回true

var fn = 20;
var sn = 20;

alert(new Number(fn) === new Number(sn));

这个警告返回一个false值。为什么它不会返回true

2个回答

20

new Number() 会返回一个 object 而不是 Number,你不能像这样比较对象。 alert({}==={}); 也会返回 false

移除 new,因为你不需要创建新的 Number 实例来比较值。

var fn = 20;
var sn = 20;

alert(Number(fn) === Number(sn));


1

如果你正在使用浮点数并且它们是计算得出的,下面将是一种稍微更可靠的方法。

console.log(Number(0.1 + 0.2) == Number(0.3)); // This will return false.

为了可靠/几乎可靠地完成这个任务,您可以使用类似以下内容的东西。
const areTheNumbersAlmostEqual = (num1, num2) => {
    return Math.abs( num1 - num2 ) < Number.EPSILON;
}
console.log(areTheNumbersAlmostEqual(0.1 + 0.2, 0.3));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接