業務背景
一直以來對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