【问题标题】:Why is Infinity / Infinity not 1?为什么 Infinity / Infinity 不是 1?
【发布时间】:2011-11-17 17:37:41
【问题描述】:

如果

Infinity === Infinity
>> true

和

typeOf Infinity
>> "number"

那为什么是

Infinity / Infinity
>>NaN

而不是 1?

【问题讨论】:

    标签: javascript math infinity


    【解决方案1】:

    请注意您对无穷大的算术行为所做的任何假设。

    如果 ∞/∞ = 1,则 1×∞ = ∞。推而广之,因为 2×∞ = ∞,所以也一定是 ∞/∞ = 2。

    由于在讨论中反对另一个答案,我想指出方程 2×∞ = ∞ 并不意味着存在多个无穷大。所有可数无限集都具有相同的基数。即,整数集与奇数集具有相同的基数,即使第二个集合缺少第一个集合的一半元素。 (OTOH,还有其他种类的“无穷大”,例如实数集的基数,但是将可数无穷大加倍并不会产生其中之一。就此而言,平方也不会.)

    【讨论】:

      【解决方案2】:

      因为specification 是这么说的:

      无穷大除以无穷大得到NaN。

      我不是数学家,但即使从这个角度来看,1 也没有任何意义。无穷大可以不同,仅因为它们在 JavaScript 中相等并不能证明在所有其他情况下都将它们视为相等(或者让除法返回1)。(编辑: 正如我所说,我不是数学家;))。

      【讨论】:

      • 但为什么在规格中会出现这种情况?
      • 因为 Infinity 和 Infinity 有时并不相同。例如,请参阅en.wikipedia.org/wiki/Hilbert%27s_paradox_of_the_Grand_Hotel。
      • 好的,但是我应该问的问题是,为什么 Infinity === Infinity 返回 true
      • @Hierow Infinity 如果返回 false 将毫无用处。考虑var x = Infinity; if( x == Infinity ) ...
      • 没有不同的无穷大。希尔伯特旅馆的要点是表明所有可数无限集都具有相同的基数,即使有些看起来比其他的大。断言 ∞ = ∞ 是完全正确的。
      【解决方案3】:

      结果在数学上是不确定的。它与javascript无关。请参阅following explanation。

      【讨论】:

      • Javascript 编译器产生的结果(这是 OP 感兴趣的)与 Javascript 有一切。它遵循数学所说的事实是一个奖励。
      • 当然可以,但是这种设计与语言本身无关。该语言实现了一个数学概念,这就是为什么这个问题的答案是数学的,与编程语言没有任何关系。
      • 同意。但在我看来,this question 的答案是“因为规范说 X”。正如你所说,“为什么规范说 X 而不是 Y” 的答案是数学的。
      【解决方案4】:

      它可以从微积分一中识别出来!这是一个不确定的形式!

      【讨论】:

      • 微积分还说 1 / 0 是无限的,而不是例如DivideByZeroException,但是告诉我的编译器。
      • @Jon: 1/0 未定义,但lim(x->0) 1/x = Inf。如果您使用的是“标准”数学,那就是。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-16
      • 1970-01-01
      相关资源
      最近更新 更多