IEEE 754将1/0的结果指定为∞(无穷大)。

但是,IEEE 754然后将0×∞的结果指定为NaN。

这感觉违反直觉的:为什么0×∞不为0?

  • 我们可以将1/0 =∞视为1 / z的极限,因为z趋于零
  • 我们可以将0×∞= 0视为0×z的极限,因为z趋于∞。

  • 为什么IEEE标准遵循直觉1.而不遵循直觉2.?

    最佳答案

    如果您不认为IEEE 754浮点零和无穷实际上是零或无限,则更容易理解它们的行为。

    浮点零不仅代表实数零。它们还表示所有四舍五入到小于最小次正规量的实数。这就是为什么零被签名的原因。如果实际上不是零,那么即使是很小的数字也会有符号。

    类似地,每个无穷大也代表所有带有相应符号的数字,这些符号将舍入到一定范围内的大小。

    NaN表示“无实数结果”,例如sqrt(-1),或“没有线索”。

    很大的东西除以很小的东西就非常非常大,所以“无穷大/ 0 ==无穷大”。

    很大的东西乘以很小的东西就可以了,这取决于我们不知道的实际大小。由于结果可能从很小到很大,NaN是最合理的答案。

    ================================================== ===============

    尽管我认为以上是理解实际浮点行为的最佳方法,但在实数限制中也会出现类似的问题。

    假设f(x)趋于无穷大,而g(x)趋向于零,因为x趋于无穷大。容易证明f(x)/g(x)趋于无穷,而x趋于无穷。另一方面,如果没有更多有关函数的信息,就不可能证明有关f(x)*g(x)的限制。

    09-17 20:15