關於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