首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么无限×0= NaN?

为什么无限×0= NaN?
EN

Stack Overflow用户
提问于 2016-06-15 16:45:13
回答 1查看 3.3K关注 0票数 4

IEEE754将1/0的结果指定为∞(无限)。

而IEEE754则将0×∞的结果指定为NaN。

这感觉counter-intuitive:为什么0×∞不是0?

  1. 我们可以认为1/0=∞是z趋于零时1/z的极限。
  2. 当z趋于∞时,我们可以认为0×z=0是0×z的极限。

为什么IEEE标准遵循直觉1,而不是2?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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)的极限。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37841240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档