当我使用JavaScript的Number()
函数比较两个数字时,对于相等的数字,它会返回false
值。但是,大于(" > ")和小于(" < ")操作会返回true
。
var fn = 20;
var sn = 20;
alert(new Number(fn) === new Number(sn));
这个警告返回一个false
值。为什么它不会返回true
?
当我使用JavaScript的Number()
函数比较两个数字时,对于相等的数字,它会返回false
值。但是,大于(" > ")和小于(" < ")操作会返回true
。
var fn = 20;
var sn = 20;
alert(new Number(fn) === new Number(sn));
这个警告返回一个false
值。为什么它不会返回true
?
new Number()
会返回一个object
而不是Number
,你不能像这样比较对象。alert({}==={});
也会返回false
。
移除 new
,因为你不需要创建新的 Number
实例来比较值。
var fn = 20;
var sn = 20;
alert(Number(fn) === Number(sn));
如果你正在使用浮点数并且它们是计算得出的,下面将是一种稍微更可靠的方法。
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));