ECMAScript 2020(ES11)中的新特性:BigInt 转换

在 ECMAScript 2020(ES11)中,新增了一种数据类型:BigInt。它是一种可以表示任意大整数的数据类型,可以用来解决 JavaScript 中整数运算的精度问题。

BigInt 转换

在 JavaScript 中,我们可以使用 Number 类型来表示整数,但是它有一个限制,即最大能够表示的整数为 2^53 - 1。当我们需要处理更大的整数时,就需要使用 BigInt 类型了。

在 ES11 中,我们可以使用前缀 n 将一个普通的数字转换为 BigInt 类型,例如:

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

注意,使用 BigInt 类型时需要在数字后面加上 n,否则会被当做普通的数字处理。

我们也可以使用 BigInt() 函数将一个字符串转换为 BigInt 类型,例如:

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

BigInt 运算

使用 BigInt 类型时,我们可以进行基本的数学运算,例如加、减、乘、除和取模。BigInt 类型的运算符与 Number 类型的运算符相同,只是需要在运算符前加上 n

例如,我们可以进行以下运算:

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

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

BigInt 和 Number 的转换

在 BigInt 和 Number 之间进行转换时,需要注意精度问题。当我们将一个大整数转换为 Number 类型时,可能会导致精度丢失,因为 Number 类型最大只能表示 2^53 - 1。

我们可以使用 Number.MAX_SAFE_INTEGER 来判断一个数字是否安全,例如:

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

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

如果需要将 BigInt 转换为 Number 类型,可以使用 Number() 函数,例如:

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

当 BigInt 转换为 Number 时,如果超出了 Number 类型的精度范围,会返回 Infinity

如果需要将 Number 转换为 BigInt 类型,可以使用 BigInt() 函数,例如:

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

示例代码

下面是一个使用 BigInt 类型进行大整数运算的示例代码:

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

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

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

运行结果:

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

总结

ECMAScript 2020(ES11)中新增了 BigInt 类型,可以用来表示任意大的整数。使用 BigInt 类型时需要注意精度问题,可以使用前缀 nBigInt() 函数将一个数字转换为 BigInt 类型。BigInt 类型的运算符与 Number 类型的运算符相同,只是需要在运算符前加上 n。在 BigInt 和 Number 之间进行转换时需要注意精度问题,可以使用 Number()BigInt() 函数进行转换。

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