ECMAScript 2017 中 BigInt 类型的使用

阅读时长 4 分钟读完

随着数字技术的不断发展,数字计算的需求也愈发复杂。JavaScript 作为一门支持数字计算的语言,当然也不例外。在 ECMAScript 2017 标准中,新增加了 BigInt 类型,以方便处理超过 Number 类型最大安全整数 (2^53 - 1) 的整数,本文将详细介绍 BigInt 的使用。

BigInt 类型的定义和使用

BigInt 可以表示任意精度的整数,且可表示为整数字符串或者 Number 类型。BigInt 字面量可以通过在末尾添加 n 来表示,如下,表示一个值为 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 的 BigInt。

BigInt 类型的操作

BigInt 的支持的操作与 Number 有些类似。在如果两个 BigInt 进行混合运算时,会抛出一个错误,需要进行类型转换,如下。

BigInt 类型只支持以下操作:

  • + - * 除和取模 %
  • 按位操作符 | ^ & << >> >>> ~
  • 通过方法进行操作 BigInt.toString()BigInt.toJSON(),BigInt.valueOf()

BigInt 类型与 Number 类型的转换

可以使用 Number 类型的值来创建 BigInt 变量,需要使用 BigInt() 函数。如果超过了 Number 类型的最大值,自动被转换成 BigInt 类型。前缀为 0b,0o,0x 的字符串也可以用于创建 BigInt,如下。

需要注意的是,使用 BigInt 变量进行数学运算时,需要使用 BigInt 类型,如下。

使用 BigInt 转换为 Number 时,小数的精度将会被丢失。需要使用 Number.parseInt() 或者 Number.parseFloat() 系列函数进行转换,如下。

BigInt 在实际开发中的使用

BigInt 可以用于实现静态类型编程语言中的大整数运算,例如计算哈希函数,RSA 算法等等。同时,可以将 BigInt 用于跨语言数据的转换。BigInt 还可以用于实现复合度量单位和纳秒的时钟。 在实际开发中,我们需要一个 TypeScript 或者 Flow 投入生产环境,以充分体现 BigInt 的优点。

总结

BigInt 类型是 ECMAScript2017 标准中新增的类型,主要用于处理超过 Number 类型最大安全整数的数字计算,使用时需要注意 BigInt 的操作和转换。BigInt 可以用于实现哈希函数,RSA 算法等等。在实际开发中,我们建议使用 TypeScript 或者 Flow 投入生产环境,以充分体现 BigInt 类型的优点。

参考文献

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64cb4b275ad90b6d041fb8e6

纠错
反馈