在 JavaScript 语言中,整数类型数据的范围受到了限制,通常只能表示介于 -2^53 和 2^53 之间的整数,导致在数值运算较大时,只能使用工具包或者自己实现大数运算。而在 ECMAScript 2020 标准中,新增了 BigInt 类型,可以方便地处理更大的整数。
什么是 BigInt
BigInt 是 ES10 中新增的数据类型,是一种可以表示任意大整数的数据类型。它可以表示的整数范围不受限制,只受内存大小和机器性能的限制。
如何使用 BigInt
BigInt 类型要求数字后面必须加上一个 "n",以标识为 BigInt 类型。例如:
const a = BigInt(1234567890123456789012345678901234567890123456789) const b = 98765432109876543210987654321n
在这个例子中,a 和 b 都是 BigInt 类型,因为它们都加了一个 "n" 后缀。
BigInt 的运算
BigInt 类型也支持 +、-、*、/、% 等常见运算,且运算符号与普通的数字类型一致。
const a = 12345678901234567890n const b = 9876543210n console.log(a + b) // 12345678901244444400n console.log(a - b) // 12345678901224691380n console.log(a * b) // 121932631137012824208578223290n console.log(a / b) // 1250070n console.log(a % b) // 3209879890n
由此看出,在处理大数运算时,BigInt 相比于使用 Number 类型的方法更加简洁,方便。
BigInt 和 Number 类型的转换
相比于 Number 类型,BigInt 类型不能与其他类型进行运算。所以需要先将 BigInt 转为 Number 类型,才能运算。
const a = 12345678901234567890n const b = 9876543210n console.log(Number(a) + Number(b)) // 1.2345678901234432e+19
同时,需要注意的是,将一个超过 Number 范围的数转换成 Number 类型时,会发生精度丢失的情况。
const a = 123456789012345678901234567890n console.log(Number(a)) // 1.2345678901234568e+29
BigInt 的应用场景
BigInt 类型的应用场景主要集中在科学计算、密码学、金融等领域,如人类基因组计算、RSA 加密方式、比特币等。
总结
ES10 新增的 BigInt 数据类型可以方便地处理更大的整数,其范围不受限制,同时支持基本运算,并且不需要使用额外的工具包。掌握 BigInt 类型可以提高代码的简洁性和可读性,有利于在大数据处理方面提升开发效率,在科学计算、密码学、金融等领域有较好的应用前景。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/654613077d4982a6ebfdaf39