ECMAScript 7 中的 BigInt 类型

在 JavaScript 中,数字类型是一种基本数据类型,包括整数和浮点数。不过,由于 JavaScript 中整数类型的大小限制,可能无法准确表达非常大的整数。为解决这一问题,ECMAScript 7 引入了 BigInt 类型。本文将为您介绍 BigInt 类型的特性及使用方法。

什么是 BigInt 类型?

BigInt 类型是一种 JavaScript 的数据类型,用于表示任意精度的整数。在传统的 JavaScript 中,整数类型采用 32 位或 64 位的表示方式,因此无法表示超出这个范围的整数。而 BigInt 类型没有这个限制,可以表示任意大的整数。

如何使用 BigInt 类型?

BigInt 类型的字面量表示与其他基本类型的字面量表示方式不同。在 BigInt 类型的字面量上必须增加 nN 后缀,以表示该字面量为 BigInt 类型,如下所示:

const a = 1234567890123456789012345678901234567890n;
const b = 9007199254740992n; // 这是 2 的 53 次方,超过 JavaScript 整数类型的表示范围

在实际应用中, BigInt 类型可以参与任何整数类型可以参与的运算,如加、减、乘、除、求余等。

const a = 1234567890n;
const b = 9876543210n;

console.log(a + b); // 11111111100n
console.log(a - b); // -8641975320n
console.log(a * b); // 12193263113729294890n
console.log(b / a); // 8n
console.log(b % a); // 913917100n

BigInt 类型的相关方法

BigInt 类型提供了一些与数值计算相关的方法,下面简单介绍几种常用的方法。

BigInt.prototype.toString()

将 BigInt 类型的值转化为字符串。

const a = 1234567890123456789012345678901234567890n;
console.log(a.toString()); // "1234567890123456789012345678901234567890"

BigInt.prototype.valueOf()

获取一个 BigInt 类型值的原始数值,与 Number 类型中的 valueOf() 方法类似。

const a = 1234567890n;
console.log(a.valueOf()); // 1234567890n
console.log(typeof a.valueOf()); // "bigint"

BigInt.prototype.toFixed()

在 BigInt 类型中,没有 toFixed() 方法,如果需要对 BigInt 类型进行四舍五入到指定位数的操作,需要先将 BigInt 转化为 Number,然后再使用 toFixed() 方法。

const a = 1234567890123456789012345678901234567890n;
const aNumber = Number(a.toString());
console.log(aNumber.toFixed(2)); // "1234567890123456790020971031.60"

使用 BigInt 类型的注意事项

BigInt 类型的数据是不可变的,一旦创建就无法更改。

BigInt 类型不能与传统的整数类型进行混合运算,否则会产生类型错误。

const a = 1234567890;
const b = 1234567890n;

console.log(a + b); // TypeError: Cannot mix BigInt and other types, use explicit conversions

必须使用显式的 BigInt() 函数将传统的整数类型转化为 BigInt 类型。

const a = 1234567890;
const b = BigInt(a);

console.log(a + b); // 2469135780n

总结

BigInt 类型是 ECMAScript 7 引入的一种数据类型,用于表示任意精度的整数。使用 BigInt 类型可以解决 JavaScript 中整数类型的大小限制问题,实现对超大整数的精确表示和计算。要使用 BigInt 类型注意变量声明时需添加 nN 后缀,运算时不能与传统整数类型混用,并且需要用 BigInt() 函数将传统整数类型转化为 BigInt 类型。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65b242bfadd4f0e0ffb731ae