JavaScript中的无限和超越

时间:2017-01-22 17:39:23

标签: javascript numbers infinity

在JavaScript中有一个名为Infinity的全局属性,据我所知,Infinity的值为1.797693134862315E+308(我可能错了)。
我也明白,任何大于1.797693134862315E+308的数字都被认为是“坏数字”,如果是这样的话,为什么我的代码(下面)工作得很好?

这是我的代码:

// Largest number in JavaScript = "1.797693134862315E+308"
// Buzz = Infinity + "0.1"
var buzz = 1.897693134862315E+308;

// Why is no error is thrown, even though the value of "buzz" is a bad number...
if(buzz >= Infinity) {
  console.log("To infinity and beyond.");
}

输出结果为:

=> "To infinity and beyond."

Repl.it

上有我的代码的工作示例

1 个答案:

答案 0 :(得分:2)

  1. Infinity的值为Infinity。这不是你提到的数字,而是Number.MAX_VALUEInfinity是一个在数字系统中有意义的常量。
  2. 向较大的浮点值添加一个小数字不会溢出,因为数字 是一个大的浮点值,这就是浮点的工作原理。如果为大数字添加足够大的数字,如

    Number.MAX_VALUE + Number.MAX_VALUE
    

    然后溢出,您将获得Infinity

  3. 您可以在维基百科或其他各种来源上read more about IEEE 754 Floating Point math