JavaScript 无限远

To infinity and beyond in JavaScript

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

这是我的代码:

// 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. Infinity的值为Infinity。不是你说的数字,是Number.MAX_VALUEInfinity 是一个在数字系统中有意义的常量。
  2. 将一个小数字加到一个大的 floating-point 值上不会溢出,因为数字 一个大的 floating-point 值并且这就是浮点数的工作原理。如果你把一个足够大的数字加到一个大数字上,如

    Number.MAX_VALUE + Number.MAX_VALUE
    

    然后它溢出,你会得到Infinity

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