加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

TypeScript BigInt运用

发布时间:2023-03-30 08:48:45 所属栏目:教程 来源:
导读:本节介绍的 bigint 数据类型是用来表示那些已经超出了 number 类型最大值的整数值,对于总是被诟病的整数溢出问题,使用了 bigint 后将完美解决。

bigint 是一种基本数据类型(primitive data type)。

JavaSc
本节介绍的 bigint 数据类型是用来表示那些已经超出了 number 类型最大值的整数值,对于总是被诟病的整数溢出问题,使用了 bigint 后将完美解决。

bigint 是一种基本数据类型(primitive data type)。

JavaScript 中可以用 Number 表示的最大整数为 2^53 - 1,可以写为 Number.MAX_SAFE_INTEGER。如果超过了这个界限,可以用 BigInt来表示,它可以表示任意大的整数。

在一个整数字面量后加 n 的方式定义一个 BigInt,如:10n 或者调用函数 BigInt():

const theBiggestInt: bigint = 9007199254740991n
const alsoHuge: bigint = BigInt()
const hugeString: bigint = BigInt("9007199254740991")
theBiggestInt === alsoHuge // true
theBiggestInt === hugeString // true
代码解释:

第 1-3 行,分别是三种表达整数 9007199254740991 的方式,方式不同含义相同,所以完全相等。

BigInt 与 Number 的不同点:

BigInt 不能用于 Math 对象中的方法。
BigInt 不能和任何 Number 实例混合运算,两者必须转换成同一种类型。
BigInt 变量在转换为 Number 变量时可能会丢失精度。
const biggest: number = Number.MAX_SAFE_INTEGER
const biggest1: number = biggest + 
const biggest2: number = biggest + 
biggest1 === biggest2 // true 超过精度
代码解释:

第 1 行,声明了一个 number 类型最大值的变量 biggest,对于 number 类型来说,这个就是最大精度。

第 3-4 行,最大精度就是这个容器已经完全满了,无论往上加多少都会溢出,所以这两个值是相等的。

而使用 BigInt:

const biggest: bigint = BigInt(Number.MAX_SAFE_INTEGER)
const biggest1: bigint = biggest + 1n
const biggest2: bigint = biggest + 2n
biggest1 === biggest2 // false
代码解释:

第 1 行,声明了一个 bigint 类型的变量 biggest。

第 3-4 行,bigint 类型就是用来表示那些已经超出了 number 类型最大值的整数值,也就是这个容器还没满,在此基础上加上两个不同的值,其结果不相等。

使用 typeof 检测类型时,BigInt 对象返回 bigint:

typeof 10n === 'bigint'         // true
typeof BigInt() === 'bigint'  // true
typeof  === 'number'          // true
typeof Number() === 'number'  // true
代码解释:

typeof 操作符返回一个字符串,表示未经计算的操作数的类型,用来判断基础数据类型。

第 1-2 行,两个书写方式都是 bigint 类型,所以相等。

第 4-5 行,两种书写方式都是 number 类型,所以相等。

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章