在 JavaScript 的新版本 ES10 中,新增了 BigInt 类型,可以用来表示任意大的整数。BigInt 类型的出现,解决了 JavaScript 在处理大整数计算时的精度问题。同时,BigInt 类型也可以在 Math 方法中进行应用,使得对于大整数的计算变得更加便捷。
什么是 BigInt 类型?
在 JavaScript 中,Number 类型无法精确表示较大的整数,最大值为 2^53-1。当需要处理更大的整数时,就需要使用 BigInt 类型。
在使用 BigInt 类型时,需要在整数后面加上 n 或者使用 BigInt() 函数将一个数值转化为 BigInt 类型。例如:
const bigNum = 123456789012345678901234567890n; const num = BigInt(123);
BigInt 类型的应用
计算
BigInt 类型可以进行基本的算术运算,包括加、减、乘、除、取模等操作。例如:
const a = 123456789012345678901234567890n; const b = 987654321098765432109876543210n; console.log(a + b); // 1111111111111111111111111111100n console.log(a - b); // -864197532086419753208641975320n console.log(a * b); // 121932631137021795444184543385602300282658076290024631728532149777100n console.log(a / b); // 0n console.log(a % b); // 123456789012345678901234567890n
转换
将 BigInt 类型转化为其他类型的数据时,需要使用 BigInt() 函数进行转换。例如:
const a = 123456789012345678901234567890n; const num = Number(a); // 报错 const str = String(a); // '123456789012345678901234567890' const bool = Boolean(a); // true const big = BigInt(a); // 123456789012345678901234567890n
BigInt 类型在 Math 方法中的应用
ES10 中,Math 对象新增了一些方法,可以用来处理 BigInt 类型的数据。
Math.abs()
Math.abs() 方法可以用来获取 BigInt 类型数据的绝对值。例如:
const a = -123456789012345678901234567890n; console.log(Math.abs(a)); // 123456789012345678901234567890n
Math.pow()
Math.pow() 方法可以用来计算 BigInt 类型数据的幂。例如:
const a = 123456789012345678901234567890n; console.log(Math.pow(a, 2n)); // 15241578753238836750495351562536198787501905199709055220692673191061943306560n
Math.floor()
Math.floor() 方法可以用来获取 BigInt 类型数据的向下取整值。例如:
const a = 123456789012345678901234567890n; console.log(Math.floor(a / 1000000000000000000000000000n)); // 123456789012n
Math.ceil()
Math.ceil() 方法可以用来获取 BigInt 类型数据的向上取整值。例如:
const a = 123456789012345678901234567890n; console.log(Math.ceil(a / 1000000000000000000000000000n)); // 123456789013n
总结
ES10 中新增的 BigInt 类型解决了 JavaScript 处理大整数计算时的精度问题,同时在 Math 方法中的应用,使得对于大整数的计算变得更加方便。在实际开发中,我们可以根据实际需求,使用 BigInt 类型来处理大整数计算,提高代码的精度和效率。
示例代码:
const a = 123456789012345678901234567890n; const b = 987654321098765432109876543210n; console.log(a + b); // 1111111111111111111111111111100n console.log(a - b); // -864197532086419753208641975320n console.log(a * b); // 121932631137021795444184543385602300282658076290024631728532149777100n console.log(a / b); // 0n console.log(a % b); // 123456789012345678901234567890n const num = Number(a); // 报错 const str = String(a); // '123456789012345678901234567890' const bool = Boolean(a); // true const big = BigInt(a); // 123456789012345678901234567890n console.log(Math.abs(-123456789012345678901234567890n)); // 123456789012345678901234567890n console.log(Math.pow(123456789012345678901234567890n, 2n)); // 15241578753238836750495351562536198787501905199709055220692673191061943306560n console.log(Math.floor(123456789012345678901234567890n / 1000000000000000000000000000n)); // 123456789012n console.log(Math.ceil(123456789012345678901234567890n / 1000000000000000000000000000n)); // 123456789013n
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65bd5bb2add4f0e0ff70866d