这是由语言定义的吗?有确定的最大值吗?在不同的浏览器中是否有所不同?


当前回答

简短的回答是“视情况而定。”

如果你在任何地方使用位操作符(或者如果你引用数组的长度),范围是:

无符号:0…(1 > > > 0)

签名:(-(1 > > > 1)1)……(1 > > > 1)

(恰巧按位操作符和数组的最大长度被限制为32位整数。)

如果你不使用位操作符或使用数组长度:

签名:(-Math pow (2.53)) ... + Math . pow (2.53))

这些限制是由“Number”类型的内部表示施加的,通常对应于IEEE 754双精度浮点表示。(请注意,与典型的有符号整数不同,由于内部表示的特征,负极限的大小与正极限的大小相同,它实际上包括一个负0!)

其他回答

我用一个公式做了一个简单的测试,X-(X+1)=-1,我在Safari、Opera和Firefox(在OS X上测试)上可以得到的X的最大值是9e15。下面是我用于测试的代码:

javascript: alert(9e15-(9e15+1));

>= ES6:

Number.MIN_SAFE_INTEGER;
Number.MAX_SAFE_INTEGER;

< = ES5

参考文献:

Number.MAX_VALUE;
Number.MIN_VALUE;

console.log (MIN_VALUE, Number.MIN_VALUE); console.log (MAX_VALUE, Number.MAX_VALUE); console.log (MIN_SAFE_INTEGER, Number.MIN_SAFE_INTEGER);/ / ES6 console.log (MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER);/ / ES6

在JavaScript中,有一个数字叫做Infinity。

例子:

(Infinity>100)
=> true

// Also worth noting
Infinity - 1 == Infinity
=> true

Math.pow(2,1024) === Infinity
=> true

对于这个主题的一些问题,这可能已经足够了。

Node.js和谷歌Chrome似乎都使用1024位浮点值,因此:

Number.MAX_VALUE = 1.7976931348623157e+308

在谷歌Chrome内置javascript,你可以去大约2^1024之前的数字被称为无穷大。