Reputation: 625
When I try to compare two numbers using JavaScript Number()
function, it returns false
value for equal numbers. However, the grater-than(">") and less-than("<") operations return true
.
var fn = 20;
var sn = 20;
alert(new Number(fn) === new Number(sn));
This alert returns a false
value. Why is this not returns true
?
Upvotes: 14
Views: 22072
Reputation: 36609
new Number()
will returnobject
notNumber
and you can not compare objects like this.alert({}==={});
will returnfalse
too.
Remove new
as you do not need to create new instance of Number
to compare values.
var fn = 20;
var sn = 20;
alert(Number(fn) === Number(sn));
Upvotes: 21
Reputation: 99
If you are using floating numbers and if they are computed ones. Below will be a slightly more reliable way.
console.log(Number(0.1 + 0.2) == Number(0.3)); // This will return false.
To reliably/almost reliably do this you can use something like this.
const areTheNumbersAlmostEqual = (num1, num2) => {
return Math.abs( num1 - num2 ) < Number.EPSILON;
}
console.log(areTheNumbersAlmostEqual(0.1 + 0.2, 0.3));
Upvotes: 2