在 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 类型时需要注意精度问题,可以使用前缀 n
或 BigInt()
函数将一个数字转换为 BigInt 类型。BigInt 类型的运算符与 Number 类型的运算符相同,只是需要在运算符前加上 n
。在 BigInt 和 Number 之间进行转换时需要注意精度问题,可以使用 Number()
或 BigInt()
函数进行转换。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65f60fa22b3ccec22fe222a3