【问题标题】:Why is 1/0=Infinity and 1/-0=-Infinity为什么 1/0=Infinity 而 1/-0=-Infinity
【发布时间】:2018-11-03 09:09:08
【问题描述】:

为什么会这样:

1 === 1;// true
0 === -0;// true
1/0 === 1/-0;// false

原因:

1/0=Infinite;
1/-0=-Infinite;

问题:

为什么不是 1/0 或 1/-0 未定义NaN

不可能是Infinity或-Infinity,因为0等于-0,所以我应该说1/0等于1/-0,但为什么不是呢?以及为什么它不是未定义(我的计算器所说的)或 NaN。

【问题讨论】:

  • 因为 IEEE-754 是这样说的。
  • 因为规范是这样说的。不要在其中解读任何数学含义,它只是被认为比替代方案更有用(对程序员)的约定
  • NaN = 不是数字,但在该操作中您使用的是数字,因此将两个数字相除并得到“非数字”结果是没有意义的。

标签: javascript math infinity


【解决方案1】:

这是因为IEEE 754 specifications 是这样定义的。

然而,这是有原因的:affinely extended real number system 将实数扩展为两个无穷大,这为limits 的计算提供了更多空间。所以有了这个扩展,除以零不是undefinedNaN

考虑以下对于正x是正确的:

    limx→0(x) = limx→0(-x)

但是对于积极的x,以下是不正确

    limx→0(1/x) = limx→0(1/-x)

注意上述与限制符号的比较如何映射到您列出的比较:

0 === -0;// true
1/0 === 1/-0;// false

其次,除法始终保持以下不变性:当且仅当恰好有一个操作数为负时,结果才为负。

这两个考虑因素都为 IEEE 754 中的原因提供了一些可信度:

1/0 === Infinity
1/-0 === -Infinity

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    • 2015-12-24
    • 1970-01-01
    相关资源
    最近更新 更多