在 JavaScript 中,数字类型默认是 Number 类型,其范围为 -9007199254740991
至 9007199254740991
,如果超出这个范围,会出现精度问题。为了解决这个问题,ES2020 引入了 BigInt 类型。BigInt 类型可以表示任意大的整数,不会出现精度问题。
BigInt 类型的定义
在 JavaScript 中,BigInt 类型的定义方式与 Number 类型类似,只需要在数字后面加上 n
即可,例如:
const bigIntNum = 123456789012345678901234567890n;
BigInt 类型的运算
BigInt 类型的运算与 Number 类型的运算有些许不同,例如:
const a = 123n; const b = 456n; console.log(a + b); // 输出 579n console.log(a - b); // 输出 -333n console.log(a * b); // 输出 56088n console.log(a / b); // 报错,BigInt 类型无法进行除法运算
需要注意的是,BigInt 类型无法进行除法运算,如果需要进行除法运算,需要使用 Math.floor()
函数进行取整操作。
BigInt 类型的转换
BigInt 类型可以与 Number 类型进行转换,例如:
const a = 123n; const b = 456; console.log(Number(a)); // 输出 123 console.log(BigInt(b)); // 输出 456n
需要注意的是,如果将一个超过 Number 类型范围的 BigInt 类型转换为 Number 类型,会出现精度问题,例如:
const bigIntNum = 123456789012345678901234567890n; console.log(Number(bigIntNum)); // 输出 1.2345678901234568e+29
BigInt 类型的应用场景
BigInt 类型适用于处理需要大量整数计算的场景,例如密码学、货币计算等。在 JavaScript 中,如果需要处理大量整数计算,推荐使用 BigInt 类型。
示例代码
const a = 123456789012345678901234567890n; const b = 987654321098765432109876543210n; console.log(a + b); // 输出 1111111110111111111011111111000n console.log(a - b); // 输出 -864197532086419753208641975320n console.log(a * b); // 输出 121932631137021795086048345437456891425323966463389374067174900n console.log(Math.floor(a / b)); // 输出 0n
总结
ES2020 中引入了 BigInt 类型,可以解决 Number 类型精度问题,适用于处理大量整数计算的场景。在使用 BigInt 类型时需要注意其运算和转换方式,推荐在需要处理大量整数计算的场景中使用 BigInt 类型。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/657d524dd2f5e1655d822531