IEEE 754将1/0的结果指定为∞(无穷大)。
但是,IEEE 754然后将0×∞的结果指定为NaN。
这感觉到与直觉相反:为什么0×∞不为0?
为什么IEEE标准遵循直觉1.而不遵循直觉2.?
最佳答案
如果您不认为IEEE 754浮点零和无穷实际上是零或无限,则更容易理解它们的行为。
浮点零不仅代表实数零。它们还表示所有四舍五入到小于最小次正规量的实数。这就是为什么零被签名的原因。如果实际上不是零,那么即使是很小的数字也会有符号。
同样,每个无穷大也代表所有带有相应符号的数字,这些符号将舍入到一定范围内的大小。
NaN表示“无实数结果”,例如sqrt(-1),或“没有线索”。
很大的东西除以很小的东西就非常非常大,所以“无穷大/ 0 ==无穷大”。
很大的东西乘以很小的东西就可以了,这取决于我们不知道的实际大小。由于结果可能从很小到很大,NaN是最合理的答案。
================================================== ===============
尽管我认为以上是理解实际浮点行为的最佳方法,但在实数限制中也会出现类似的问题。
假设f(x)
趋于无穷,而g(x)
趋于零,因为x
趋于无穷。很容易证明f(x)/g(x)
趋于无穷,而x
趋于无穷。另一方面,如果没有更多有关函数的信息,就不可能证明有关f(x)*g(x)
的限制。