ES2020 版本中增加了一种新的数字类型 BigInt,它提供了一种表示超出 JavaScript 数字类型最大表示范围的整数值的方法,解决了 JavaScript 在处理大整数方面的限制。本文将详细介绍该类型的使用及应用,并提供示例代码。
什么是 BigInt?
JavaScript 中的数字类型包括整数、浮点数和 NaN,它们都在 Number 类型下。但是在 JavaScript 中,整数值的最大范围是 2 的 53 次方,也就是 9,007,199,254,740,992,超出该范围的整数值将无法按照预期进行计算和处理。
BigInt 解决了这个问题。BigInt 是一种新的数字类型,它可以存储比 Number 类型范围更大的整数值,可以表示任何 JavaScript 数字类型无法表示的整数值。在 BigInt 下不再存在数字范围的限制,因此可以处理非常大的整数,例如 factorial。
如何使用 BigInt?
在创建 BigInt 值时,需要在整数值末尾添加 'n' 或 'N',以表示该值为 BigInt 类型。
const bigInteger = 987654321987654321987654321n; console.log(typeof bigInteger); // "bigint"
需要注意的是,在 BigInt 和 Number 类型之间进行计算时,需要使用 BigInt 对象的方法进行计算,否则将无法进行正确的计算。
const bigInteger = 987654321987654321987654321n; const number = 12345; console.log(bigInteger + number); // TypeError: Cannot mix BigInt and other types, use explicit conversions
BigInt 的方法和属性
BigInt 类型提供了一些内置方法和属性,这些方法和属性在 BigInt 实例上操作和访问。一些常用的方法如下:
BigInt.toString()
返回表示 BigInt 值的字符串。
const bigInteger = 987654321987654321987654321n; console.log(bigInteger.toString()); // "987654321987654321987654321"
BigInt.valueOf()
返回原始 BigInt 值。
const bigInteger = 987654321987654321987654321n; console.log(bigInteger.valueOf()); // 987654321987654321987654321n
BigInt.asUintN()
将 BigInt 值转换为指定位数的无符号整数。
const bigInteger = 987654321987654321987654321n; console.log(BigInt.asUintN(128, bigInteger)); // 345367268713092865185883062490937029137n
BigInt.asIntN()
将 BigInt 值转换为指定位数的有符号整数。
const bigInteger = 987654321987654321987654321n; console.log(BigInt.asIntN(128, bigInteger)); // -26756146191567558342840463344593864895n
BigInt 在实际应用中的用途
BigInt 可以在需要进行大数计算的场景中使用,例如在密码学、货币等方面。下面是一些典型的应用场景:
计算器
在计算器应用程序中,BigInt 可以用于大数值的计算,例如计算超大的整数、浮点数、分数等等。
const bigInteger1 = 1234567890987654321n; const bigInteger2 = 234567890987654321n; console.log(bigInteger1 + bigInteger2); // 1479135781975308642n
加密和解密
在密码学中,BigInt 可以用于大数的加密和解密,例如 RSA 加密算法。
const bigInteger1 = 201n; const bigInteger2 = 153n; const modulus = 589n; const result = (bigInteger1 ** bigInteger2) % modulus; console.log(result); // 341n
通信传输
在通信传输中,BigInt 可以用于大数值的传输,例如传输银行账户余额等等。特别是在货币交易中,BigInt 的使用可以更加安全地处理超过 Number 类型范围的大数值。
const balance = 50000000000000000000n;
总结
BigInt 是 JavaScript 中的一种新的数字类型,在 ES2020 中首次出现。它可以存储比 Number 类型范围更大的整数值,可以表示任何 JavaScript 数字类型无法表示的整数值。BigInt 应用广泛,在计算机领域、金融领域和加密领域等都有应用,成为计算能力的重要补充。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6531877d7d4982a6eb34b059