最新消息:历时半年,永住昨天下来了

JavaScript的Max Integer值

在Java中,不管是Integer还是Long都有一个MAX_VALUE的常数,表示最大值。在JavaScript里好像没有类似的常数。那到底JavaScript的Max Integer值是多少呢?

在网上找了一下资料,在JavaScript中,不区别integer和float,全部为number类型。number类型在JavaScript中以64位(8byte)来存储。这64位中有符号位1位、指数位11位、实数位52位。

也就是在数字在2的53次方时,是最大值。其值为:9007199254740992(0x20000000000000)。超过这个值的话,运算的结果就会不对。看如下代码:

JavaScript
var maxInteger = 9007199254740992;
console.log(maxInteger + 1);
console.log(maxInteger === maxInteger + 1);

如果你在写大数的for语句,就要注意了,比如下面的代码看起来没问题,但它是一个死循环

JavaScript
var maxInteger = 9007199254740992;
for (var i = maxInteger; i < maxInteger + 2; ++i) {
  // infinite loop
}

还有一个有趣的问题,因为精度的原因,JavaScript的float计算有时候不准确,比如0.1+0.2,呵呵,你可以去试试。

JavaScript
console.log(0.1 + 0.2);

2014/09/08 追记
最新的IE,Firefox,Chrome里已经有Number.MAX_VALUE和Number.MIN_VALUE这两个常数,它们的值分别是1.7976931348623157e+308和5e-324。
其中,Firefox和Chrome也添加了最大最小安全的Integer数,它们分别是:Number.MAX_SAFE_INTEGER,Number.MIN_SAFE_INTEGER,它们的值分别是:9007199254740991,9007199254740991。


参考地址1:http://blog.vjeux.com/2010/javascript/javascript-max_int-number-limits.html
参考地址2:http://www.w3school.com.cn/js/js_obj_number.asp

转载请注明:宇托的狗窝 » JavaScript的Max Integer值

发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址