在 ES12 中,新增了一种数据类型——BigInts。BigInts 可以用来存储超出了 JavaScript Number 数据类型的数值,是一种大整数数据类型。本篇文章将详细介绍 BigInts 的定义、使用方法和注意事项,并提供相应的示例代码。
1. BigInts 的定义
BigInts 是 ES12 中新增的一种数据类型,用于存储大整数。大整数是指超出了 JavaScript Number 数值范围的整数。在 JavaScript 中,Number 的有效范围为 $-(2^{53}-1)$ 到 $2^{53}-1$,如果超出这个范围,Number 会出现精度丢失。
BigInts 没有精度限制,可以存储任意长度的整数,十进制形式的 BigInts 以 n 结尾,例如 12345678901234567890n。
2. BigInts 的使用方法
2.1 BigInts 的创建
可以使用 BigInt() 函数将一个数值转换成 BigInts 类型。示例如下:
const a = BigInt(12345678901234567890); console.log(a); // 12345678901234567890n
BigInt() 函数也可以接受一个字符串作为参数,示例如下:
const b = BigInt("123456789012345678901234567890"); console.log(b); // 123456789012345678901234567890n
2.2 BigInts 的运算
加减乘除运算:BigInts 支持加、减、乘、除运算。示例如下:
const a = BigInt(12345678901234567890); const b = BigInt(98765432109876543210); console.log(a + b); // 111111111111111111100n console.log(a - b); // -86419753208641975320n console.log(a * b); // 12193263113702179529362916974816098765432100n console.log(b / a); // 7n
注:除法运算结果为整数,且舍去小数部分。
其他运算:BigInts 也支持其他典型运算如求余数 % 和幂运算 **。
2.3 BigInts 的比较
与 Number 数据类型类似,BigInts 可以使用关系运算符 <、>、<=、>= 和相等运算符 ==、!=、===、!==。示例如下:
const a = BigInt(12345678901234567890); const b = BigInt(98765432109876543210); console.log(a < b); // true console.log(b >= a); // true console.log(a === BigInt(12345678901234567890)); // true console.log(b != 12345678901234567890); // true
2.4 BigInts 的转换
可以使用 BigInt.toString() 方法将 BigInts 转换为字符串。示例如下:
const a = BigInt(12345678901234567890); const str = a.toString(); console.log(str); // "12345678901234567890"
可以使用 Number() 方法将 BigInts 转换为 Number 类型。但需要注意的是,如果 BigInts 超出了 Number 能表示的范围,则会出现精度丢失。示例如下:
const a = BigInt(12345678901234567890); const b = Number(a); console.log(b) // 12345678901234568000
因此,在转换时需要考虑潜在的精度丢失问题。
2.5 BigInts 的使用注意事项
- BigInts 不能与 Number 类型进行混合运算,需要进行类型转换。
- BigInts 不能使用 parseInt() 和 parseFloat() 方法。
- BigInts 不能使用位运算符。
- BigInts 不能作为对象键名。
3. BigInts 在实际开发中的意义
在实际开发中,BigInts 可以用于任何需要处理大整数的场景,例如密码学、计算机图形学、人工智能等。
同时,BigInts 还可以用于处理需要精度保证的计算场景,例如处理货币等。
4. 总结
BigInts 是 ES12 中新增的一种数据类型,用于存储大整数。BigInts 没有精度限制,可以存储任意长度的整数。BigInts 可以进行加、减、乘、除等运算,但不能与 Number 类型进行混合运算,同时也需要注意转换和使用上的注意事项。BigInts 在实际开发中可以用于处理大整数和需要精度保证的计算场景。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64f68432f6b2d6eab3f16f75