ES9 中的 BigInt,处理超大数字的好方法

· 约 4 分钟读完

ES9 中的 BigInt,处理超大数字的好方法

在过去,JavaScript 中的数字都是 double 类型,最大值为 2^53-1,也就是 9007199254740991。如果需要处理更大的数字,需要使用 BigInt。

ES9 中引入了 BigInt,可以表示任意精度的整数,而且不会失去精度,解决了在 JavaScript 中需要处理超大数字时的困扰。

  1. 创建 BigInt

在 JavaScript 中,可以通过在数字后加 n 来创建一个 BigInt。例如:

也可以使用 BigInt() 函数将一个 Number 转成 BigInt,这个方法必须在数字后面加一个 "n"。

  1. BigInt 运算

在 BigInt 中,支持大多数的运算符,例如 +、-、*、/、%、<<、>>、>>>、&、|、^ 等等。

如果一个运算符的两个操作数类型不一致,那么 BigInt 运算符会将另一个操作数转换为 BigInt。

  1. BigInt 和 Number 的转换

如果需要将 BigInt 转换成 Number,可以使用 Number() 函数,但是,在超过 Number.MAX_SAFE_INTEGER 的时候,转换结果会是不准确的。

反过来,将 Number 转成 BigInt,使用 BigInt() 函数即可。

  1. BigInt 和字符串之间的转换

可以使用 toString() 方法将 BigInt 转换成字符串。

也可以直接用字符串来创建 BigInt。

需要注意的是,如果字符串字符长度超过 Number.MAX_SAFE_INTEGER,则无法准确处理。

  1. 示例代码

下面是一个例子,计算一百个整数的阶乘之和。在普通数字时会得到 Infinity,而通过 BigInt 可以准确计算。

  1. 学习和指导意义

BigInt 的引入使得 JavaScript 对于超大数值的计算变得更加便捷和准确。但是,需要注意的是,使用 BigInt 运算符来处理 BigInt 的数字会比使用常规运算符要慢得多,因为 BigInt 运算符需要更多的计算。因此,在对待大量数据的场景下,需要谨慎使用。

在实际开发中,我们可以使用 BigInt 来进行加密算法的开发,比如 RSA 算法等等。另外,在一些以数值计算为主的场景下,BigInt 也能够发挥很好的作用。因此,掌握 BigInt 的使用是非常重要的。

总之,ES9 中的 BigInt 提供了一种方便、可靠的方法来处理超大数字,深入了解和学习 BigInt 的使用,对于开发人员来说是非常有帮助的。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d6798ba941bf7134c3e56d