【发布时间】:2016-10-16 21:52:12
【问题描述】:
IEEE 754 将 1 / 0 的结果指定为 ∞(无穷大)。
但是,IEEE 754 然后将 0 × ∞ 的结果指定为 NaN。
这感觉反直觉:为什么 0 × ∞ 不是 0?
我们可以将 1 / 0 = ∞ 视为 1 / z 的极限,因为 z 趋于零
我们可以将 0 × ∞ = 0 视为 0 × z 的极限,因为 z 趋于 ∞。
为什么 IEEE 标准遵循直觉 1. 而不是 2.?
【问题讨论】:
-
因为无穷大不是一个具体的数字?
-
但是在
Infinity / 0的情况下,除以零是否优先于分子中发生的任何事情? (我在这里不是在严格地争论数学。我只是在猜测语言作者的意图。) -
Infinity is javascript 中的一个数字,至少按类型来说是这样,但它并不是一个具体的数字,它不是
7或类似的东西,更多的是一个概念,“最大的数” 等等。当你将无穷大与任何正数或负数相乘时,你会得到正无穷或负无穷,因为它不能更大。当您将一个数字除以 Infinity 时,您会得到0,因为它不能再小了。当您将 Infinity 与0相乘时,您会得到“不是数字”,因为有人认为这是合乎逻辑的做法,并将其放入规范中。 -
为什么不将 0*Infinity 视为 x*infinity 的极限,因为 x 趋于零?反过来说,这也很有意义。 0*Infinity 的问题,以及它应该是 NaN 的原因是,有可能为 0、Infinity 以及介于两者之间的任何东西想出一个案例。
标签: floating-point numbers nan ieee-754 infinity