JavaScript 的 Number 型別能夠在不丟失精度的情況下達到的最大整數值是多少?


MAX_SAFE_INTEGER 常量的值為 9007199254740991 (9,007,199,254,740,991 或九千萬億)。JavaScript 只能正確表示介於 -(253 - 1) 和 253 - 1 之間的整數,這就是該數字的依據。JavaScript 使用 IEEE 754 標準中指定的雙精度浮點數格式。

JavaScript 中的兩種數字型別是 Number 和 BigInt。

Number 是最常用的數字型別,是一個 64 位 IEEE 754 浮點數。

Number.MAX_SAFE_INTEGER,如下所示,具有此型別的最大精確整數值:

  • 253-1,或者

  • +/- 9,007,199,254,740,991,或者

  • 用數字表示為:九千萬億七萬億一百九十九十億二億五千四百七十萬四千九百九十一

    因此,在一個上下文中,一個 PB(拍位元組)是一千萬億位元組(或一千 TB(太位元組))。在這個上下文中,“安全”指的是能夠精確表示和比較整數的能力。要安全地使用大於此值的整數,必須使用 BigInt,它沒有上限。

    在這種情況下,最大安全整數是 231-1,或 2,147,483,647。這是因為位運算子和移位運算子只作用於 32 位數字。

示例 1

在這個例子中,讓我們瞭解如何使用位運算子和移位運算子來使用 32 位整數。

<!DOCTYPE html> <html> <title>What is JavaScript’s highest integer value that a Number can go to without losing precision? - TutorialsPoint</title> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body style="text-align:center"> <script> const log = console.log let a = 9007199254740992 let b = -a log(a == a + 1) // true ! log(b == b - 1) // this is also true ! // Bitwise/shifts are only used on int32, although arithmetic operators are acceptable. log(a / 2) // 4503599627370496 log(a >> 1) // 0 log(a | 1) // 1 </script> </body> </html>

請按鍵盤上的 F12 鍵訪問瀏覽器控制檯以檢視結果。

示例 2

在 Typescript 中,可以使用 MAX_SAFE_INTEGER 常量來表示可以使用的最大安全整數。它是 Number 物件的靜態屬性。其值為 9007199254740991。

“安全”是指任何大於上述數字的數字都不能保證被精確和正確地表示。此限制是由 Javascript 使用的雙精度 64 位數字格式而不是 Typescript 施加的。

<!DOCTYPE html> <html> <title>What is JavaScript’s highest integer value that a Number can go to without losing precision? - TutorialsPoint</title> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body style="text-align:center"> <script> document.write(Number.MAX_SAFE_INTEGER +'<br>') //9007199254740991 document.write(Number.MIN_SAFE_INTEGER) //-9007199254740991 </script> </body> </html>

示例 3

在這個例子中,讓我們瞭解如何使用 Integer.isSafeInteger 方法來驗證一個數字是否安全。

<!DOCTYPE html> <html> <title>What is JavaScript’s highest integer value that a Number can go to without losing precision? - TutorialsPoint</title> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body style="text-align:center"> <script> document.write(Number.isSafeInteger(Number.MAX_SAFE_INTEGER) +'<br>'); //this returns true document.write(Number.isSafeInteger(Number.MAX_SAFE_INTEGER+1)); //this returns false </script> </body> </html>

MAX_VALUE & MIN_VALUE

示例 4

Number 資料型別可以表示的最大數字是 1.7976931348623157e+308。MAX_VALUE。Number.MIN_VALUE 是最小數字。

<!DOCTYPE html> <html> <title>What is JavaScript’s highest integer value that a Number can go to without losing precision? - TutorialsPoint</title> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body style="text-align:center"> <script> document.write(Number.MAX_VALUE +'<br>') document.write(Number.MIN_VALUE) </script> </body> </html>

示例 5

數字超過 Number.MAX_VALUE。雙精度 64 位二進位制系統無法表示 MAX_VALUE 以上的值。因此,MAX_VALUE 以上的任何值都會被截斷為 MAX_VALUE。而一個極大的值會返回 Infinity。

<!DOCTYPE html> <html> <title>What is JavaScript’s highest integer value that a Number can go to without losing precision? - TutorialsPoint</title> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body style="text-align:center"> <script> document.write(Number.MAX_VALUE + 100 == Number.MAX_VALUE); //true document.write("<br>"); document.write(Number.MAX_VALUE + Number.MAX_VALUE); //Infinity </script> </body> </html>

簡而言之

Typescript Number 物件的靜態屬性包括 MAX_SAFE_INTEGER、MIN_SAFE_INTEGER、MAX_VALUE 和 MIN_VALUE。這些表示 Number 資料型別可以支援的最大/最小值。使用 MAX_SAFE_INTEGER 和 MIN_SAFE_INTEGER 至關重要,因為任何大於這兩個值的整數都不能保證被精確和正確地表示。

更新於:2022年8月24日

22K+ 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.