ES11:引入 BigInt,如何使用 64 位整数?

阅读时长 5 分钟读完

在过去,JavaScript 中的 Number 类型只能够表示 64 位浮点数,不能够表示 64 位整数。这就意味着在 JavaScript 中处理大整数时,我们需要使用一些特殊的技巧,例如将大整数拆分成小整数进行计算,或者使用第三方库来处理大整数。这些技巧不仅麻烦,而且容易出错。

ES11 引入了 BigInt 类型,这使得 JavaScript 能够直接表示 64 位整数,而不需要使用额外的技巧或库。本文将介绍 BigInt 的用法以及如何使用 BigInt 处理大整数。

BigInt 的用法

BigInt 类型是一个全新的 JavaScript 类型,用于表示任意精度的整数。BigInt 的值可以通过在整数末尾添加 n 来创建,例如:

在创建 BigInt 值时,需要注意以下几点:

  1. 必须在整数末尾添加 n,否则会被认为是普通的 Number 类型;
  2. BigInt 的值必须是整数,否则会抛出错误;
  3. BigInt 的值可以是任意长度的整数。

BigInt 类型支持所有的算术运算符和位运算符,例如:

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

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

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

BigInt 类型同样支持比较运算符,例如:

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

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

需要注意的是,BigInt 类型和 Number 类型之间不能直接进行运算,否则会抛出错误。例如:

如何使用 BigInt 处理大整数

使用 BigInt 类型处理大整数非常简单。例如,我们可以使用 BigInt 类型计算一个非常大的阶乘:

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

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

在上面的代码中,我们使用 BigInt 类型计算了 100 的阶乘,得到了一个非常大的整数。如果使用 Number 类型计算 100 的阶乘,结果将会溢出。

除了计算阶乘,我们还可以使用 BigInt 处理其他大整数运算,例如计算斐波那契数列:

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

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

在上面的代码中,我们使用 BigInt 类型计算了斐波那契数列的第 100 项,得到了一个非常大的整数。

总结

ES11 引入了 BigInt 类型,使得 JavaScript 能够直接表示 64 位整数,而不需要使用额外的技巧或库。BigInt 类型支持所有的算术运算符和位运算符,可以轻松处理大整数运算。在使用 BigInt 类型时,需要注意 BigInt 的值必须是整数,且必须在整数末尾添加 n。如果需要处理大整数运算,建议使用 BigInt 类型,而不是使用 Number 类型。

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

纠错
反馈