在日常的前端开发中,我们常常需要处理数字类型的数据。然而,一旦数字过大就会遇到 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