随着数字计算的需求不断增长,JavaScript 发布了 ES11 标准,其中包括了内置类型 BigInt,用于处理大数计算。BigInt 相比传统 Number 类型具有更高的精度和支持更大的数值范围,但使用时需要注意一些细节。
什么是 BigInt?
BigInt 表示一个任意长度整数,它可以轻松地表示超出 Number 范围的数字。BigInt 并不是一个对象,而是一个原始数据类型,它具有以下特点:
- 后缀 n 来表明这个数是 BigInt 数据类型。
- BigInt 可以表示整数的最大值、最小值、正数和负数等。
- 可以通过数学运算符来处理 BigInt,与普通 Number 类型的操作类似。
下面是一个简单的示例:
const myBigInt = 9007199254740991n; console.log(myBigInt + 1n); // 9007199254740992n
在上面的示例中,9007199254740991n
是一个 BigInt 值,加上 1n
后就得到了 9007199254740992n
。
如何使用 BigInt?
如果我们要创建一个 BigInt 值,则需要在数字后面添加后缀 n
,例如:
const myNum = 10; const myBigInt = 10n;
当然,也可以通过工厂函数 BigInt()
来创建 BigInt 值:
const myBigInt = BigInt(10);
需要注意的是,BigInt 类型与其他 JavaScript 数据类型的操作并不总是兼容。例如,如果我们尝试将 BigInt 类型的变量和 Number 类型的变量混合使用,则可能会出现错误。
可以执行哪些操作?
BigInt 提供了许多可以用来处理大整数的运算符和方法。这里列举其中一些常见的操作:
算术运算
- 加法:使用
+
运算符或BigInt.prototype.add()
方法实现。 - 减法:使用
-
运算符或BigInt.prototype.sub()
方法实现。 - 乘法:使用
*
运算符或BigInt.prototype.mul()
方法实现。 - 除法:使用
/
运算符或BigInt.prototype.div()
方法实现。
const a = 100n; const b = 200n; console.log(a + b); // 300n console.log(a - b); // -100n console.log(a * b); // 20000n console.log(b / a); // 2n
比较运算
- 等于:使用
===
运算符或BigInt.prototype.eq()
方法实现。 - 不等于:使用
!==
运算符或BigInt.prototype.neq()
方法实现。 - 大于:使用
>
运算符或BigInt.prototype.gt()
方法实现。 - 小于:使用
<
运算符或BigInt.prototype.lt()
方法实现。
const a = 100n; const b = 200n; console.log(a === b); // false console.log(a !== b); // true console.log(a < b); // true console.log(a > b); // false
其他方法
BigInt.prototype.toString(radix)
:将 BigInt 转换为字符串,其中 radix 表示要使用的进制。BigInt.prototype.valueOf()
:返回 BigInt 值的原始数字值。BigInt.asUintN(bitLength, value)
:将给定的值转换为无符号整数(不关心符号)并重新调整大小以适合给定的位长度。BigInt.asIntN(bitLength, value)
:将给定的值转换为有符号整数(最高有效位定义符号)并重新调整大小以适合给定的位长度。
总结
BigInt 的出现增强了 JavaScript
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/651b8afd95b1f8cacd33150c