JavaScript 中 Number 可以达到的最大整数值是多少,而不会丢失精度?
MAX SAFE INTEGER 常量的值为 9007199254740991(9,007,199,254,740,991 或九千万亿)。JavaScript 只能正确表示 -(253 - 1) 和 253 - 1 之间的整数,这就是该数字的原理。 JavaScript 采用 IEEE 754 中指定的双精度浮点格式数字。
Number 和 BigInt 是 JavaScript 中可用的两种数字类型。
Number 是最流行的数字类型,是 64 位浮点 IEEE 754 数字。
Number.MAX SAFE INTEGER,如下所示,具有此类型中最大的精确整数值 −
253-1,或
+/- 9,007,199,254,740,991,或
就数字而言,有九千万亿七万亿一千九百九十九亿二千五百四十七万四千九百九十一
因此,将其放在上下文中,PB 是千万亿字节(或一千兆字节)。在这种情况下,"安全"一词指的是准确表示和比较整数的能力。您必须使用没有上限的 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 而不是 Typescript 使用的双精度 64 位数字格式施加的。
<!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
数字 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
Numbers 超出 Number。双精度 64 位二进制系统无法表示 MAX VALUE。因此,任何超过 MAX VALUE 的值都会被修剪为 MAX 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 + 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。这些属性表示数字数据类型可以支持的最大/最小值。必须使用 MAX SAFE INTEGER 和 MIN SAFE INTEGER,因为任何高于这两个值的整数都不能保证准确无误地表示。