IEEE754将1/0的结果指定为∞(无限)。
而IEEE754则将0×∞的结果指定为NaN。
这感觉counter-intuitive:为什么0×∞不是0?
为什么IEEE标准遵循直觉1,而不是2?
发布于 2016-06-15 18:06:54
如果不把IEEE 754浮点零点和无穷大看作字面上的零或无穷大,就更容易理解它们的行为。
浮点零点不仅表示实数为零。它们也代表了所有的实数,它们的四舍五入会比最小的次正常值更小。这就是零签名的原因。即使是微小的数字,如果它们实际上不是零的话,也有一个符号。
同样地,每一个无穷大也代表所有的数字,并带有相应的符号,这些数字的大小不适合有限范围。
NaN表示“无实数结果”,例如sqrt(-1),或者“没有线索”。
非常大的东西除以很小的东西是非常非常大的,所以‘无限/0 ==无限’。
很大的东西乘以很小的东西可以是任何东西,这取决于我们不知道的实际大小。由于结果可以是从非常小到非常大的任何东西,所以NaN是最合理的答案。
=================================================================
虽然我认为以上是理解实际浮点行为的最好方法,但在实数限制中也出现了类似的问题。
假设f(x)
趋向于无穷大,g(x)
趋向于零,而x
趋向于无穷大。很容易证明f(x)/g(x)
趋向于无穷大,而x
趋向于无穷大。另一方面,如果没有更多关于函数的信息,就不可能证明f(x)*g(x)
的极限。
https://stackoverflow.com/questions/37841240
复制相似问题