ES2021 中的 bigint 类型,让你更精确地处理数值

阅读时长 8 分钟读完

在日常开发中,我们经常需要处理大数值。然而在 JavaScript 中,Number 类型的精度是有限的,当处理超过 Number.MAX_SAFE_INTEGER (2^53-1)的数值时,会出现精度丢失的情况。为了解决这个问题,ES2021 引入了一个新的数据类型:bigint。

bigint 类型的定义

bigint 类型是一种新的基本数据类型,用来表示任意精度的整数。它的取值范围是 -2^53+1 到 2^53-1,超出这个范围的整数可以被表示为一个字符串或者数组。

bigint 类型的字面量表示

bigint 类型的字面量表示是一个整数后面加上 n,例如:

bigint 类型的操作

bigint 类型可以进行所有的基本数学运算,包括加、减、乘、除、取模等。例如:

bigint 类型的转换

bigint 类型可以和 Number 类型相互转换,但需要注意精度的问题。如果 bigint 的值超出了 Number.MAX_SAFE_INTEGER 的范围,转换成 Number 类型时会出现精度丢失的问题。例如:

bigint 类型的应用

bigint 类型在实际开发中有很多应用场景,例如处理加密算法中的大数值、处理金融数据中的精确计算等。

实现斐波那契数列

我们可以使用 bigint 类型来实现斐波那契数列中的大数值计算。例如:

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

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

实现高精度计算器

我们可以使用 bigint 类型来实现一个高精度计算器,支持大数值的加、减、乘、除、取模等操作。例如:

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

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

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

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

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

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

小结

bigint 类型是 ES2021 中引入的一个新的基本数据类型,用来表示任意精度的整数。它可以进行所有基本的数学运算,并且可以和 Number 类型相互转换。在实际开发中,bigint 类型可以用来处理大数值的计算,例如实现斐波那契数列、高精度计算器等。我们需要注意 bigint 类型和 Number 类型之间的精度问题,避免出现精度丢失的情况。

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

纠错
反馈