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