ES12的新API:BigInt

阅读时长 5 分钟读完

在日常的前端开发中,我们常常需要处理数字类型的数据。然而,一旦数字过大就会遇到 JavaScript 中数字精度的问题。

在 ES12 中,BigInt 的出现为我们解决了这个问题。

BigInt是什么?

BigInt 是一种新的数据类型,其可以表示任意大的整数,不受 JavaScript 中数字精度的限制。BigInt 是一个对象,由 "n" 后缀的整数文字或使用 BigInt() 构造函数创建。

下面是一个使用 BigInt 的例子:

输出结果为:

我们可以看到,BigInt 可以表示更大的整数,且以后面的 n 标记。

BigInt的使用

创建

BigInt 可以通过 BigInt() 构造函数来创建。同时,我们也可以将其他类型的数据类型转化为 BigInt 类型:

输出结果为:

需要注意的是,由于 BigInt 运算结合性等问题,不支持使用 BigInt() 方法将数字字面量转换为 BigInt 类型。最好的选择是使用 "n" 后缀来创建 BigInt 类型的数字。

运算

BigInt 支持所有的 JavaScript 数值运算符,且保留了与其它数字类型的副作用。也就是说,我们可以对 BigInt 和 Number 进行运算。

另外,配合运算符和标准 Number 工具库,BigInt 可以做更高精概率计算。

下面是一个使用 BigInt 进行运算的例子:

输出结果为:

比较

我们可以通过比较运算符来对 BigInt 进行比较操作,这些运算符包括小于(<)、等于(==)、大于(>)、小于等于(<=)和大于等于(>=)。

输出结果为:

值得注意的是,当我们使用 == 进行比较时,会将 BigInt 和 Number 转换后再进行比较。因此,要进行确切的比较,最好使用 ===

实战应用

当我们需要处理较大整数时,BigInt 是一种很好的选择。下面是一个使用 BigInt 的例子:

给定一个整数数组 nums 和一个整数 k,请返回该数组中所有元素相加等于 k 的不同组合数。

-- -------------------- ---- -------
-------- -------------------- -- -
  --- ------ - ----------
  --- -- - ------------ - -------------
  ------ - ---
  --- ---- - - -- - - ------------ ---- -
    --- --- - ----------------
    --- ---- - - ---- - -- ------- ---- -
      ----- -- ---- - -----
    -
  -
  ------ -----------
-

----- ---- - --- -- --- 
----- - - --
-------------------------------- ---------------

输出结果为:

在上面的例子中,我们使用了 BigInt 类型来计算整数的和以及不同的组合数。

总结

ES12 中的 BigInt 弥补了 JavaScript 中数字精度的不足之处,应用非常的广泛。当我们需要处理大数运算时,BigInt 是一个很好的选择。同时,BigInt 的应用也进一步推动了 JavaScript 的发展,提高了该语言的处理能力。

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

纠错
反馈