在过去,JavaScript 中的 Number 类型只能够表示 64 位浮点数,不能够表示 64 位整数。这就意味着在 JavaScript 中处理大整数时,我们需要使用一些特殊的技巧,例如将大整数拆分成小整数进行计算,或者使用第三方库来处理大整数。这些技巧不仅麻烦,而且容易出错。
ES11 引入了 BigInt 类型,这使得 JavaScript 能够直接表示 64 位整数,而不需要使用额外的技巧或库。本文将介绍 BigInt 的用法以及如何使用 BigInt 处理大整数。
BigInt 的用法
BigInt 类型是一个全新的 JavaScript 类型,用于表示任意精度的整数。BigInt 的值可以通过在整数末尾添加 n 来创建,例如:
const bigIntNumber = 1234567890123456789012345678901234567890n;
在创建 BigInt 值时,需要注意以下几点:
- 必须在整数末尾添加 n,否则会被认为是普通的 Number 类型;
- BigInt 的值必须是整数,否则会抛出错误;
- BigInt 的值可以是任意长度的整数。
BigInt 类型支持所有的算术运算符和位运算符,例如:
-- -------------------- ---- ------- ----- - - ------------------------------------------ ----- - - ------------------------------------------ ------------- - --- -- ------------------------------------------ ------------- - --- -- ------------------------------------------ ------------- - --- -- --------------------------------------------------------------------------------- ------------- - --- -- -- ------------- - --- -- ----------------------------------------- ------------- -- ---- -- ----------------------------------------- ------------- -- ---- -- ---------------------------------------- ------------- - --- -- ----------------------------------------- ------------- - --- -- ----------------------------------------- ------------- - --- -- ----------------------------------------- ---------------- -- ------------------------------------------
BigInt 类型同样支持比较运算符,例如:
-- -------------------- ---- ------- ----- - - ------------------------------------------ ----- - - ------------------------------------------ ------------- - --- -- ---- ------------- -- --- -- ---- ------------- - --- -- ----- ------------- -- --- -- ----- ------------- -- --- -- ----- ------------- -- --- -- ----
需要注意的是,BigInt 类型和 Number 类型之间不能直接进行运算,否则会抛出错误。例如:
const a = 1234567890123456789012345678901234567890n; const b = 9876543210987654321098765432109876543210; console.log(a + b); // TypeError: Cannot mix BigInt and other types
如何使用 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