BigInt
在前面我们知道JS中Number是双精度浮点数,他可以表示的书实际上上是有一个范围的在正负2的53次方减一之间,超出此范围就无法表示了。而BigInt可以用任意精度表示整数。即使超出Number 的安全整数限制,也可以安全地存储和操作大整数。注意的一点是BigInt只能表示整数不能表示小数。
一. 创建BigInt的值:
两种方式:第一种就是直接在整数后面加个小写的n即可。第二种就是使用BigInt函数。但BigInt() 不是构造函数,因此不能使用 new 操作符。
var a=123n;
const b=BigInt(12345);//=>b=12345n
const c=BigInt("123456789");
//BigInt函数里面可以是数值(二进制,八进制,十六进制也行)也可以是字符串(能转换成整数的字符串)
二. 类型检测
BigInt是javascript中一个新的数据类型,因此使用typeof检测时会返回新类型"bigint"。
三. 运算
- 对于+、-、*、/、%,+=, -=,** 等运算符,要求两边都是BigInt类型,否则会报错。另外也支持++,–运算。要注意的是当使用 BigInt 时,带小数的运算会被取整。
var a=5n;
var b=2n;
console.log(b/a); //=>2n
- 对于 > >=,<,<=,==,!= 运算符可以和数字进行比较。注意的是因为BigInt是一个新的数据类型,所以在和Number进行绝对相等比较时是不同的
var a=123n;
var b=124;
b>a; //=>true
var c=123;
b===a; //=>false
-
BigInt不支持Math函数
四. 类型转换 -
转换成Boolean:与number类型一样
-
转换为字符串:有toString和toLocalString方法
var a=123n;
console.log(a.toString()) //=>'123'
console.log(a.toLocaleString()) //=>'123'
console.log(a.valueOf()) //=> 123n