当我尝试使用 JavaScript Number()
函数比较两个数字时,它会返回相同数字的false
值。但是,grater-than(">")和less-than("<")操作返回true
。
var fn = 20;
var sn = 20;
alert(new Number(fn) === new Number(sn));
此警报返回false
值。为什么这不会返回true
?
答案 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));