Comparing equality of two numbers using JavaScript Number() function

后端 未结 2 1334
春和景丽
春和景丽 2021-01-17 12:01

When I try to compare two numbers using JavaScript Number() function, it returns false value for equal numbers. However, the grate

相关标签:
2条回答
  • 2021-01-17 12:36

    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.

    Try this:

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

    0 讨论(0)
  • 2021-01-17 12:36

    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));
    
    0 讨论(0)
提交回复
热议问题