在 JavaScript 中,BigInt 是一个比 Number 类型更大的整数类型。在先前的版本中,BigInt 还不能像 Number 类型一样使用算术运算符。但在 ES11 中,BigInt 现在可以使用通用的算术运算符了,这让在 JavaScript 中使用更大的整数变得更加容易。
开始使用 BigInt
在 ES11 中,可以使用 BigInt()
函数将一个数字转换为 BigInt 类型。例如:
const x = BigInt(9007199254740991); // 将数字转换为 BigInt 类型 console.log(typeof x); // "bigint"
BigInt 的大小限制
BigInt 类型可以表示比 Number 类型更大的整数。在 BigInt 类型中,数值的限制是 2 的 53 次方次方(9007199254740992)到 2 的 64 次方次方减 1(18446744073709551615)之间的整数。但是,在 JavaScript 中,BigInt 类型的精度会随着数字大小的增加而变得较低。
BigInt 的基本运算
BigInt 类型可以使用通用的算术运算符,包括加法、减法、乘法和除法。这些运算符可以使用与 Number 类型相同的方式使用。
const a = BigInt(9007199254740991); const b = BigInt(9007199254740992); console.log(a + b); // BigInt(18014398509481983) console.log(b - a); // BigInt(1) console.log(a * 2n); // BigInt(18014398509481982) console.log(b / 2n); // BigInt(4503599627370496)
需要注意的是,在算术运算时,BigInt 类型不会隐式类型转换为 Number 类型。因此,在进行运算时,需要使用 n
后缀来指示值是 BigInt 类型的。
BigInt 的比较运算
与算术运算符一样,BigInt 类型也可以使用比较运算符进行比较运算。这些运算符包括 ===
、!==
、<
、>
、<=
和 >=
。
const a = BigInt(9007199254740991); const b = BigInt(9007199254740992); console.log(a < b); // true console.log(a >= b); // false console.log(a === b); // false console.log(a !== b); // true
需要注意的是,在比较 BigInt 和 Number 类型的值时,BigInt 类型的值将首先被转换为 Number 类型,这可能会导致精度损失。
BigInt 的位运算
BigInt 类型也支持位运算,包括按位与、按位或和按位异或运算符,以及左移和右移运算符。
const a = BigInt(147); const b = BigInt(91); console.log(a & b); // BigInt(19) console.log(a | b); // BigInt(219) console.log(a ^ b); // BigInt(200) console.log(a << 2n); // BigInt(588) console.log(a >> 2n); // BigInt(36) console.log(a >>> 2n); // BigInt(36)
结论
ES11 中,BigInt 类型可以使用通用的算术运算符,包括加、减、乘和除。同时,BigInt 类型也支持位运算和比较运算符。使用 BigInt 类型可以方便地处理较大的整数问题,但需要注意 BigInt 类型的精度问题。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6748cc1a93696b02680443e8