Javascript Infinity

时间:2013-04-13 16:12:53

标签: javascript

除以0得出这个特殊值:

 3/0 output:Infinity

你不能互相发挥积极和消极的无限:

Infinity - Infinity output:NaN (Why?)

事实证明,“超越无限”仍然是无限的:

 Infinity + Infinity output:Infinity(this is accepted)


 5 * Infinity
Infinity(this is also accepted)

那么为什么无穷无穷的评估对NaN?它应该是无穷的不是吗?我也想知道为什么不能将对象转换为原始值?抱歉一次发两个问题,因为这是最后一个问题我可以发帖。见这里:

var obj = {
    valueOf: function () {
        console.log("valueOf");
        return {}; // not a primitive
    },
    toString: function () {
        console.log("toString");
        return {}; // not a primitive
    }
}

 Number(obj) //TypeError: Cannot convert object to primitive values

3 个答案:

答案 0 :(得分:9)

这就是∞在数学中的作用。无限本身不是一个数字,它是一个概念。一般的想法是, ∞ + x = ∞ ∀ x

显然,

∞无限大。如果你从另一个无限大的东西中减去一个无限大的东西,你就无法定义你剩下的东西。如果第一个无穷大更大,你会得到一个负面结果,但如果它更小,那么结果将是正数(减法的基本规则),但由于两者都无限大,你无法知道哪个更大(除非更多)给出了信息,例如导致这些无穷大的上下文*)。因此,就计算机而言,∞ - ∞在数学上是未定义的,或者不是数字。

*示例:设x =所有正整数之和,y =每个正整数加和的总和。在这种情况下,我们可以说y> x,即使两者都是无穷大。

答案 1 :(得分:0)

因为它是一种不确定的形式,所以它不是无限的。 NaN以最佳方式反映了这一点。

http://en.wikipedia.org/wiki/Indeterminate_form

相关问题: https://math.stackexchange.com/questions/60766/what-is-the-result-of-infinity-minus-infinity

答案 2 :(得分:0)

var A = 1/0
var B = 2 * A
var c = B - A

请注意,即使B = 2 * A,仍然A = B(2 *无穷大仍然是无穷大,所以它们都是无穷大),那么您对C的期望是什么?无穷大或0?

从数学上讲,无穷大并不是一个数字。虽然IsNaN(1/0)= false。