javascript - Varför är 1/0=Infinity och 1/-0=-Infinity


Varför är detta så:

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

Orsak :

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

Fråga :

Varför är inte 1/0 eller 1/-0 Odefinierat eller NaN?

Det kan inte vara Oändlighet eller -Oändlighet, eftersom 0 är lika med -0, så 1/0 är lika med 1/-0 skulle jag säga, men varför är det inte det? Och varför är det inte Odefinierat (vad min räknare säger) eller NaN.

Svar #1

Detta beror på att IEEE 754-specifikationerna definierar det på det sättet.

Det finns dock en motivering för detta: det affint utökade reella talsystemet utökar de reella talen med de två infiniteterna, vilket ger mer utrymme för att räkna med gränsvärden. Så med denna utökning är en division med noll inte undefined eller NaN.

Tänk på att följande är sant för positiva x:

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

Men följande är inte sant för positiva x:

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

Observera hur ovanstående jämförelser med gränsvärdesnotation motsvarar de jämförelser du listade:

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

För det andra upprätthåller en division alltid följande invarians: resultatet är negativt om och endast om exakt en av operatorerna är negativ.

Båda dessa överväganden ger viss trovärdighet till varför i IEEE 754:

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