Search code examples
javascriptmathinfinity

Why is 1/0=Infinity and 1/-0=-Infinity


Why is this so:

1 === 1;// true
0 === -0;// true
1/0 === 1/-0;// false

Reason:

1/0=Infinite;
1/-0=-Infinite;

Question:

Why isn't 1/0 or 1/-0 Undefined or NaN?

It can't be Infinity or -Infinity, because of 0 is equal to -0, so 1/0 is equal to 1/-0 I should say, but why it isn't? And why it isn't Undefined (what my calculator says) or NaN.


Solution

  • This is because the IEEE 754 specifications define it like that.

    There is however a reasoning for this: the affinely extended real number system extends the real numbers with the two infinities, which gives some more room for calculating with limits. So with this extension a division by zero is not undefined or NaN.

    Consider that the following is true for positive x:

          limx→0(x) = limx→0(-x)

    However the following is not true for positive x:

          limx→0(1/x) = limx→0(1/-x)

    Note how the above comparisons with limit notation map to the comparisons you listed:

    0 === -0;// true
    1/0 === 1/-0;// false
    

    Secondly, a division always maintains the following invariance: the result is negative if and only when exactly one of the operands is negative.

    Both of these considerations give some credence as to why in IEEE 754:

    1/0 === Infinity
    1/-0 === -Infinity