WCM
WCM

Reputation: 625

Comparing equality of two numbers using JavaScript Number() function

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

Answers (2)

Rayon
Rayon

Reputation: 36609

new Number() will return object not Number and you can not compare objects like this. alert({}==={}); will return false 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

Parash
Parash

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

Related Questions