在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."
上有我的代码的工作示例
答案 0 :(得分:2)
Infinity
的值为Infinity
。这不是你提到的数字,而是Number.MAX_VALUE
。 Infinity
是一个在数字系统中有意义的常量。向较大的浮点值添加一个小数字不会溢出,因为数字 是一个大的浮点值,这就是浮点的工作原理。如果为大数字添加足够大的数字,如
Number.MAX_VALUE + Number.MAX_VALUE
然后将溢出,您将获得Infinity
。
您可以在维基百科或其他各种来源上read more about IEEE 754 Floating Point math。