在前端开发中,我们经常需要进行数字计算。但是,JS中的数字类型有一个限制,即最大整数值是 2^53 - 1。如果需要计算的数字超过这个范围,就无法得到正确的结果。为了解决这个问题,ES12中引入了 BigInt。
BigInt 是一种新的数字类型,它支持任意大的整数值。本文将介绍何时使用 BigInt、如何声明 BigInt 变量,以及如何使用 BigInt 来进行基本的大数计算。
何时使用 BigInt
当您需要进行任意大的整数运算时,就需要使用 BigInt。BigInt 可用于以下场景:
- 高精度计算
- 加密算法
如何声明 BigInt 变量
声明 BigInt 变量时,需要在数字后面加上 n 字符。
例如:
const x = 1234567890123456789012345678901234567890123456789n;
需要注意的是,如果您使用 parseFloat() 或者 parseInt() 从字符串中获取值并将其转换为 BigInt,则需要手动添加 n 后缀。
例如:
const str = "1234567890123456789012345678901234567890123456789"; const x = BigInt(str);
如何进行大数计算
和常规数字类型一样,BigInt 可以进行基本的数学运算。
加法
const a = 1234567890123456789012345678901234567890n; const b = 9876543210987654321098765432109876543210n; const sum = a + b; console.log(sum); // 输出:11111111111111111101111111111111111111100
减法
const a = 9876543210987654321098765432109876543210n; const b = 1234567890123456789012345678901234567890n; const diff = a - b; console.log(diff); // 输出:8641975320864197532096419753086419755320
乘法
const a = 1234567890123456789012345678901234567890n; const b = 9876543210987654321098765432109876543210n; const product = a * b; console.log(product); // 输出:12193263113702179508032904795653842635105437257137390245808458679538879070100
除法
const a = 12193263113702179508032904795653842635105437257137390245808458679538879070100n; const b = 9876543210987654321098765432109876543210n; const quotient = a / b; console.log(quotient); // 输出:1234567890123456789012345678901234567890n
取模运算
const a = 12193263113702179508032904795653842635105437257137390245808458679538879070100n; const b = 9876543210987654321098765432109876543210n; const remainder = a % b; console.log(remainder); // 输出:1324708217556078240339855925513869183675n
总结
在本文中,我们学习了 BigInt 的基本用法和如何在程序中使用它进行大数计算。正如本文所述,BigInt 提供了一个出色的方法来处理大数问题,并且是 ES12 中一个非常强大的新特性。如果您需要进行任何大数计算,BigInt 应该是您的首选工具。
示例代码:
-- -------------------- ---- ------- -- ---- ------ -- ----- --------- - ------------------------------------------ -- ---- ----- - - ------------------------------------------ ----- - - ------------------------------------------ ----- --- - - - -- ----------------- -- ---- ----- - - ------------------------------------------ ----- - - ------------------------------------------ ----- ---- - - - -- ------------------ -- ---- ----- - - ------------------------------------------ ----- - - ------------------------------------------ ----- ------- - - - -- --------------------- -- ---- ----- - - ------------------------------------------------------------------------------- ----- - - ------------------------------------------ ----- -------- - - - -- ---------------------- -- ------ ----- - - ------------------------------------------------------------------------------- ----- - - ------------------------------------------ ----- --------- - - - -- -----------------------
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6503c90195b1f8cacd0914ff