javascript - JavaScript 中的无限及超越

标签 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. Infinity 的值为 Infinity。这不是您提到的数字,而是 Number.MAX_VALUEInfinity 是一个在数字系统中有意义的常数。
  2. 将一个小数字与一个大浮点值相加不会溢出,因为该数字是一个大浮点值,这就是浮点的工作原理。如果将足够大的数字添加到一个大数字中,如

    Number.MAX_VALUE + Number.MAX_VALUE
    

    然后它溢出,你会得到无穷大

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

关于javascript - JavaScript 中的无限及超越,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41794101/

相关文章:

common-lisp - 表示无穷大且与实现无关的NAN

Java 无穷大异常处理

javascript - 动态添加新的 ng-model 到 angularJS

javascript - 表行引用和值传递

javascript - NodeJS/Javascript 选择一个以 # 开头的对象?

c - 即使 srand (time(NULL)) 在循环之外,数字在一段时间内是相同的

javascript - 在javascript中将数字数组转换为String()

javascript - 从url获取脚本

numbers - 为什么我们有 "is not a Number"(isNan) 函数?

haskell - 如果我在 GHCI 上输入 [1/0..1/0],我将得到 Infinite Infinity。为什么?