JavaScript BigInt 类型
JavaScript 的 BigInt 变量用于存储过大的整数值,这些值无法用普通的 JavaScript Number 变量表示。
JavaScript 整数精度
JavaScript 整数的精度只有 15 位小数:
在 JavaScript 中,所有数字都以 64 位浮点格式(IEEE 754 标准)存储。
根据此标准,大整数无法精确表示,会被舍入。
因此,JavaScript 只能安全地表示以下整数:
最大到 9007199254740991 + (253 - 1)
以及
最小到 -9007199254740991 - (253 - 1)。
超出此范围的整数值会丢失精度。
如何创建 BigInt
要创建 BigInt,请在整数末尾添加 n 或调用 BigInt():
示例
let x = 9999999999999999;
let y = 9999999999999999n;亲自试一试 »
let x = 1234567890123456789012345n;
let y = BigInt(1234567890123456789012345)亲自试一试 »BigInt:一种新的 JavaScript 数据类型
JavaScript 中 typeof 的 BigInt 类型为 "bigint":
BigInt 是 JavaScript 中第二个数值数据类型(第一个是 Number)。
加上 BigInt,JavaScript 支持的数据类型总数为 8 种。
1. String
2. Number
3. Bigint
4. Boolean
5. Undefined
6. Null
7. Symbol
8. Object
BigInt 运算符
可用于 JavaScript Number 的运算符也可用于 BigInt。
备注
不允许对 BigInt 和 Number 进行算术运算(类型转换会丢失信息)。
无法对 BigInt 执行无符号右移 (>>>) 操作(因为它没有固定的宽度)。
BigInt 类型的小数
BigInt 类型不能有小数位。
BigInt 除法示例
let x = 5n;
let y = x / 2;
// Error: Cannot mix BigInt and other types, use explicit conversion.
let x = 5n;
let y = Number(x) / 2;
亲自试一试 »BigInt 的十六进制、八进制和二进制表示
BigInt 也可以用十六进制、八进制或二进制表示:
BigInt 十六进制示例
let hex = 0x20000000000003n;
let oct = 0o400000000000000003n;
let bin = 0b100000000000000000000000000000000000000000000000000011n;亲自试一试 »精确度的问题
舍入可能会危及程序安全:
浏览器支持
BigInt() 是 ES2020 的一项特性。
自 2020 年 9 月起,所有现代浏览器均已完全支持 ES2020。
| Chrome 85 |
Edge 85 |
Firefox 79 |
Safari 14 |
Opera 71 |
| 2020年8月 | 2020年8月 | 2020年3月 | 2020年9月 | 2020年9月 |
