JavaScript BigInt
JavaScript BigInt 变量用于存储普通 JavaScript Number 无法表示的大整数。
JavaScript 整数精度
JavaScript 整数精度仅为 15 位
在 JavaScript 中,所有数字都存储在 64 位浮点格式 (IEEE 754 标准) 中。
使用此标准,大整数无法精确表示,会被四舍五入。
因此,JavaScript 只能安全地表示整数
最高可达 9007199254740991 +(253-1)
and
最低可达 -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;
// 错误:不能混合使用 BigInt 和其他类型,请使用显式转换。
let x = 5n;
let y = Number(x) / 2;
自己动手试一试 »
BigInt 十六进制、八进制和二进制
BigInt 也可以用十六进制、八进制或二进制表示法编写
BigInt 十六进制示例
let hex = 0x20000000000003n;
let oct = 0o400000000000000003n;
let bin = 0b100000000000000000000000000000000000000000000000000011n;
自己动手试一试 »
精度注意事项
四舍五入可能会损害程序安全
浏览器支持
BigInt 自 2020 年 9 月起在所有浏览器中都受支持
| Chrome 67 | Edge 79 | Firefox 68 | Safari 14 | Opera 54 |
| 2018 年 5 月 | 2020 年 1 月 | 2019 年 7 月 | 2020 年 9 月 | 2018 年 6 月 |
最小和最大安全整数
ES6 在 Number 对象中添加了 max 和 min 属性
MAX_SAFE_INTEGERMIN_SAFE_INTEGER
新的 Number 方法
ES6 还向 Number 对象添加了 2 个新方法
Number.isInteger()Number.isSafeInteger()
Number.isInteger() 方法
Number.isInteger() 方法如果参数是整数,则返回 true。
Number.isSafeInteger() 方法
安全整数是可以精确表示为双精度数字的整数。
Number.isSafeInteger() 方法如果参数是安全整数,则返回 true。
安全整数是从 -(253 - 1) 到 +(253 - 1) 的所有整数。
这是安全的:9007199254740991。这是不安全的:9007199254740992。