ES10 中新增 BigInt 类型和在 Math 方法中的应用

在 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