关于JavaScript中Number整数最大长度的一个疑问


业务背景

一直以来对Number的最大最小值都没有透彻的理解清楚,在开发过程中也从来没有遇到过这种极限情况

可是最近在刷红宝书第4版的时候,又遇到这个概念.所以想透彻的搞清楚一下

关于这个概念我的理解

书上的概念

  • Number对象是采用64位存储的,即8个字节 * 8位 = 64位
  • 操作符在操作Number类型时,实际是操作的32位(位运算那一节介绍的)
  • 在底层再把32位转换成64位进行处理

我的结论

  • 最大的整数就是2的32次方减1
  • 即 2 ** 32 - 1
  • 书上在介绍数组索引时也能佐证,因为数组的索引是整数,最大的索引就是 2 ** 32 - 1 即4294967295

我的疑问

可是在开发过程中经常会遇到这样一个问题,JAVA侧返回的订单编号或用户ID都整型,在Web侧会出现后面2位超出JavaScript整数取值范围

如下:

java = 123456789012345678; // 一共18个数 js = 123456789012345600; // 一共16个数外加2个0

在新的ECMAScript规范中也添加了1个Number常量最大安全整数Number.MAX_SAFE_INTEGER

  • 这个里面的最大整数和上面的一样,是16个数
  • 即2的53次方-1 2 ** 53 - 1

 

 

IEEE 754标准

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM