JavaScript有两种数字类型:Number
和BigInt
.
最常用的数字类型Number
是64位浮点数IEEE 754.
这种类型的最大精确积分值为Number.MAX_SAFE_INTEGER
,即:
正确地说:一千万亿字节就是PB(或1000TB).
在这种情况下,"安全"指的是准确表示整数并正确比较它们的能力.
请注意,所有大小为no的正整数和负整数
要安全地使用比这个大的整数,需要使用BigInt
,它没有上限.
请注意,按位运算符和移位运算符对32位整数进行运算,因此在这种情况下,最大安全整数为231-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表示,您可以从变量中分配和读取该值,因此对于小于或等于该值的整数域中的very carefully个选定应用程序,您可以将其视为最大值.
在一般情况下,必须将此IEEE-754值视为不精确值,因为它对逻辑值9007199254740992或9007199254740993进行编码是不明确的.