这是由语言定义的吗?是否有规定的最大值?在不同的浏览器中是否有所不同?
JavaScript有两种数字类型:Number和BigInt
Number
BigInt
最常用的数字类型Number为64位浮点IEE 754数字。
该类型的最大精确整数值为Number.MAX_SAFE_INTEGER,即:
Number.MAX_SAFE_INTEGER
从一个角度来看:一个4千万个字节是PB(或一千TB)。
在本文中,“安全”是指能够准确表示整数并正确比较它们的能力。
从规格:
请注意,所有大小不大于2 53的正整数和负整数都可以在Number类型中表示(实际上,整数0具有+0和-0两种表示形式)。
为了安全地使用大于此值的整数,您需要使用BigInt,没有上限。
请注意,按位运算符和移位运算符对32位整数进行运算,因此在这种情况下,最大安全整数为2 31 -1或2147483647。
const log = console.log var x = 9007199254740992 var y = -x log(x == x + 1) // true ! log(y == y - 1) // also true ! // Arithmetic operators work, but bitwise/shifts only operate on int32: log(x / 2) // 4503599627370496 log(x >> 1) // 0 log(x | 1) // 1
关于编号为9007199254740992的主题的技术说明:该值有一个精确的IEEE-754表示形式,您可以从变量中分配和读取该值,因此对于在小于或等于整数的整数域中进行 非常仔细 选择的应用程序此值,您可以将其视为最大值。
在一般情况下,您必须将此IEEE-754值视为不精确,因为它是对逻辑值9007199254740992还是9007199254740993进行编码都是模棱两可的。