在 JavaScript 中,我们可以使用数字类型来存储整数值。但是,当我们需要处理比较大的整数值时,JavaScript 的数字类型可能无法满足我们的需求。这时,我们需要使用 BigInt 数据类型,它可以处理比标准数字类型大得多的整数。
什么是 BigInt?
BigInt 是 JavaScript 中的一个新数据类型,用于表示任意大的整数。它可以处理比 Number 类型还要大的整数,同时还支持各种常见的数学运算,比如加、减、乘、除和取模等。
BigInt 在 ES2020 中正式加入了 JavaScript 标准中,因此,如果你使用的是旧版本的浏览器或 Node.js,你可能需要使用 polyfill 库来支持 BigInt。不过,大多数现代浏览器和 Node.js 版本都已经支持 BigInt 了。
如何创建 BigInt?
在 JavaScript 中,我们可以将数字值的末尾添加一个 n
来创建 BigInt。例如:
const bigIntValue = 100n;
我们也可以从字符串创建 BigInt。例如:
const bigIntValue = BigInt("9007199254740991");
如何进行 BigInt 运算?
和标准数字类型一样,BigInt 也支持各种基本算术运算和比较运算。
加、减、乘
我们可以使用 +
、-
和 *
运算符来进行 BigInt 的加、减和乘。例如:
const a = 12345678901234567890n; const b = 98765432109876543210n; console.log(a + b); // 111111111111111111100n console.log(a - b); // -86419753208641975320n console.log(a * b); // 1219326311370217959948190576480216200n
除、取模
我们可以使用 quotientRemainder()
函数来进行 BigInt 的除法和取模。该函数会返回一个数组,其中第一个元素是商,第二个元素是余数。例如:
const a = 12345678901234567890n; const b = 98765432109876543210n; const [quotient, remainder] = BigInt.asUintN(64, a).quotientRemainder(BigInt.asUintN(64, b)); console.log(quotient); // 13268174n console.log(remainder); // 12375716759749720176n
比较
我们可以使用 <
、>
、<=
、>=
和 ===
运算符来进行 BigInt 的比较。例如:
const a = 12345678901234567890n; const b = 98765432109876543210n; console.log(a < b); // true console.log(a > b); // false console.log(a === b); // false
BigInt 的限制
虽然 BigInt 可以处理比 Number 类型更大的整数,但它也有一些限制。首先,BigInt 只能表示整数,不能表示小数。其次,BigInt 的运算速度通常要比 Number 类型慢得多,因此,在某些情况下,你可能需要考虑使用其他的解决方案。
总结
BigInt 是 JavaScript 中处理大整数的一种新的数据类型,它可以处理比标准数字类型大得多的整数,并支持各种常见的数学运算。BigInt 在 ES2020 中正式加入了 JavaScript 标准中,大多数现代浏览器和 Node.js 版本都已经支持 BigInt,因此你可以考虑在你的项目中使用它。
示例代码
-- -------------------- ---- ------- -- ----- ----- - - ---------------------- ----- - - ---------------------- ------------- - --- -- ---------------------- ------------- - --- -- ---------------------- ------------- - --- -- -------------------------------------- -- ---- ----- ---------- ---------- - ------------------ --------------------------------------- ---- ---------------------- -- --------- ----------------------- -- --------------------- -- -- ------------- - --- -- ---- ------------- - --- -- ----- ------------- --- --- -- -----
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64a8566448841e98944e335d