在 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 上有我的代码的工作示例
最佳答案
Infinity
的值为Infinity
。这不是您提到的数字,而是Number.MAX_VALUE
。Infinity
是一个在数字系统中有意义的常数。将一个小数字与一个大浮点值相加不会溢出,因为该数字是一个大浮点值,这就是浮点的工作原理。如果将足够大的数字添加到一个大数字中,如
Number.MAX_VALUE + Number.MAX_VALUE
然后它会溢出,你会得到
无穷大
。
您可以read more about IEEE 754 Floating Point math在维基百科或各种其他来源。
关于javascript - JavaScript 中的无限及超越,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41794101/