关于javascript:为什么1/0 = Infinity和1 / -0 = -Infinity

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

为什么会这样:

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

原因:

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

题:

为什么不是1/0或1 / -0 Undefined或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.


这是因为IEEE 754规范就是这样定义的。

然而,有一个理由:仿射扩展的实数系统扩展了两个无穷大的实数,这给了一些更多的限制计算空间。 因此,对于此扩展,除以零不是undefinedNaN

考虑以下情况对于正x:

    lim x→0 (x)= lim x→0 ( - x)

但是对于正x,以下情况并非如此:

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

请注意以上与限制符号的比较如何映射到您列出的比较:

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

其次,除法总是保持以下不变性:当且仅当其中一个操作数为负时,结果为负。

这两个考虑因素都为IEEE 754中的原因提供了一些可信度:

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