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

时间:2016-03-18 06:40:47

标签: javascript

当我尝试使用 JavaScript Number()函数比较两个数字时,它会返回相同数字的false值。但是,grater-than(">")和less-than("<")操作返回true

var fn = 20;
var sn = 20;

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

此警报返回false值。为什么这不会返回true

2 个答案:

答案 0 :(得分:14)

  

new Number()将返回object而非Number,您无法比较此类对象。 alert({}==={});也会返回false

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

试试这个:

var fn = 20;
var sn = 20;

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

答案 1 :(得分: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));