在 ECMAScript 2020 (ES11) 中,新增了一种基本数据类型:BigInt。BigInt 类型用于表示大于 253 - 1 的整数,可以解决 JavaScript 中整数运算精度的问题。本文将深入探讨 BigInt 类型的使用方法和注意事项。
创建 BigInt
在 JavaScript 中,可以使用 BigInt()
函数来创建一个 BigInt 类型的数值。例如:
const bigIntNum = BigInt(9007199254740991); console.log(bigIntNum); // 9007199254740991n
注意:在数值后面加上字母 n
,可以将其转换为 BigInt 类型。
BigInt 运算
在 BigInt 类型上,可以进行加、减、乘、除等运算,与普通的数值运算方式类似。例如:
const a = BigInt(9007199254740991); const b = BigInt(2); console.log(a + b); // 9007199254740993n console.log(a - b); // 9007199254740989n console.log(a * b); // 18014398509481982n console.log(a / b); // 4503599627370495n
需要注意的是,与普通的数值运算不同,BigInt 类型的除法运算会向下取整,例如:
const a = BigInt(5); const b = BigInt(2); console.log(a / b); // 2n
BigInt 与普通数值的运算
在 BigInt 类型和普通数值类型之间进行运算时,需要使用 BigInt()
将普通数值转换为 BigInt 类型。例如:
const a = BigInt(9007199254740991); const b = 2; console.log(a + BigInt(b)); // 9007199254740993n
BigInt 与字符串的转换
在 BigInt 类型和字符串类型之间进行转换时,可以使用 toString()
方法和 BigInt()
函数。例如:
const bigIntNum = BigInt(9007199254740991); const strNum = bigIntNum.toString(); const newBigIntNum = BigInt(strNum); console.log(bigIntNum === newBigIntNum); // true
需要注意的是,如果字符串中的数值超出了 BigInt 类型的范围,转换时会抛出错误。
BigInt 的位运算
在 BigInt 类型上,可以进行位运算,包括按位与、按位或、按位异或、左移、右移等运算。例如:
const a = BigInt(7); const b = BigInt(2); console.log(a & b); // 2n console.log(a | b); // 7n console.log(a ^ b); // 5n console.log(a << b); // 28n console.log(a >> b); // 1n
总结
BigInt 类型是 ECMAScript 2020 (ES11) 中新增的基本数据类型,用于表示大于 253 - 1 的整数。在 BigInt 类型上,可以进行加、减、乘、除等运算,与普通的数值运算方式类似。需要注意的是,BigInt 类型的除法运算会向下取整。在 BigInt 类型和普通数值类型之间进行运算时,需要使用 BigInt()
将普通数值转换为 BigInt 类型。在 BigInt 类型和字符串类型之间进行转换时,可以使用 toString()
方法和 BigInt()
函数。在 BigInt 类型上,可以进行位运算,包括按位与、按位或、按位异或、左移、右移等运算。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65d1db06add4f0e0ffa7315e