ES11 的幸运 Number:BigInt

阅读时长 5 分钟读完

在 JavaScript 中,数字类型是非常常见的数据类型之一。然而,在过去的版本中,JavaScript 对于数字类型有一定的限制,最大值只能达到 $2^{53}$,而且无法精确表示大于这个值的数字。这在某些场景下,比如处理大型整数运算时,会带来不少麻烦。为了解决这个问题,ES11 新增了一种新的数字类型:BigInt。

BigInt 的定义

BigInt 是一种新的数字类型,用来表示大整数,它可以精确表示任意大的整数,而不会丢失精度。BigInt 类型的值可以被表示为任意大小的整数,只要内存足够大。

BigInt 类型的值可以使用后缀 n 来区分,例如:

BigInt 的使用

BigInt 的使用与 Number 类型的使用非常相似,可以进行基本运算,例如加、减、乘、除等操作。同时,BigInt 也支持比较运算,例如等于、不等于、大于、小于等操作。

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

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

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

需要注意的是,BigInt 类型的值和 Number 类型的值不能进行混合运算,否则会报错。

BigInt 的转换

由于 BigInt 类型的值和 Number 类型的值不能进行混合运算,因此在实际应用中,需要进行类型的转换。BigInt 可以通过 Number() 函数进行转换,而 Number 也可以通过 BigInt() 函数进行转换。

需要注意的是,将一个非常大的 Number 类型的值转换为 BigInt 类型的值时,可能会导致精度的丢失。

BigInt 的应用场景

BigInt 类型的出现,主要是为了解决 Number 类型在处理大整数时的精度问题。因此,BigInt 类型的应用场景主要是在处理需要精度较高的大整数运算时。

例如,RSA 加密算法中使用的大整数运算,就可以使用 BigInt 类型来实现。

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

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

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

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

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

总结

BigInt 类型是 ES11 中新增的一种数字类型,用来表示大整数,可以精确表示任意大的整数,而不会丢失精度。BigInt 类型的值可以进行基本运算和比较运算,但不能与 Number 类型的值进行混合运算。在实际应用中,BigInt 类型主要用于处理需要精度较高的大整数运算。

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

纠错
反馈