le_*_*e_m 1 floating-point numbers nan infinity ieee-754
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),或"没有线索".
非常大的非常大的东西非常大,所以`Infinity/0 == Infinity".
非常大的东西乘以非常小的东西可能是任何东西,取决于我们不知道的实际大小.由于结果可能是从非常小到非常大的结果,NaN是最合理的答案.
================================================== ===============
虽然我认为以上是理解实际浮点行为的最佳方法,但在实数限制中出现了类似的问题.
假设f(x)倾向于无穷大并g(x)趋于零,因为x倾向于无穷大.很容易证明f(x)/g(x)倾向于无穷大x倾向于无穷大.另一方面,如果没有f(x)*g(x)关于功能的更多信息,就不可能证明有关限制的任何内容.