JavaScript BigInt
JavaScript BigInt
变量用于存储太大而无法用普通 JavaScript 数字表示的大整数值。
JavaScript 整数精度
JavaScript 整数最多只能精确到 15 位:
整数精度
1 | let x = 999999999999999; |
在 JavaScript 中,所有数字都以 64 位浮点格式(IEEE 754 标准)存储。
使用此标准,无法准确表示大整数,并且将四舍五入。
因此,JavaScript 只能安全地表示整数:
高达 9007199254740991 +(253-1)
和
低至 -9007199254740991 -(253-1).
超出此范围的整数值将失去精度。
如何创建 BigInt
要创建 BigInt
,请将 n 附加到整数末尾或调用 BigInt()
:
1 | let x = 9999999999999999; |
1 | let x = 1234567890123456789012345n; |
BigInt:一种新的 JavaScript 数据类型
JavaScript a 是 “bigint”:typeof``BigInt
1 | let x = BigInt(999999999999999); |
BigInt
是 JavaScript 中的第二个数字数据类型(仅次于 Number
)。
对于 BigInt
,JavaScript 中支持的数据类型总数为 8 种:
- 字符串
2.数字
3.Bigint
4.布尔值
5.未定义
6.空
7.符号
8.对象
BigInt 运算符
可用于 JavaScript Number
的运算符也可用于 BigInt
。
BigInt 乘法示例
1 | let x = 9007199254740995n; |
笔记
不允许 BigInt
和 Number
之间进行算术运算(类型转换会丢失信息)。
无符号右移 (>>>) 无法在 BigInt
上完成(它没有固定宽度)。
BigInt 小数
BigInt
不能有小数。
BigInt Division 示例
1 | let x = 5n; |
BigInt 十六进制、八进制和二进制
BigInt
也可以用十六进制、八进制或二进制表示法书写:
BigInt 十六进制示例
1 | let hex = 0x20000000000003n; |
精准的好奇心
舍入可能会危及程序安全性:
1 | 9007199254740992 === 9007199254740993; // is true !!! |
浏览器支持
BigInt
自 2020 年 <>
月起,所有浏览器都支持:
Chrome 67 | Edge 79 | Firefox 68 | Safari 14 | Opera 54 |
May 2018 | Jan 2020 | Jul 2019 | Sep 2020 | Jun 2018 |
最小和最大安全整数
[ES6]
向 Number
对象添加了 max
和 min
属性:
MAX_SAFE_INTEGER
MIN_SAFE_INTEGER
1 | let x = Number.MAX_SAFE_INTEGER; |
1 | let x = Number.MIN_SAFE_INTEGER; |
新的数字方法
[ES6]
还向 Number 对象添加了 2 个新方法:
Number.isInteger()
Number.isSafeInteger()
Number.isInteger() 方法
如果参数是整数,则 Number.isInteger()
方法返回 true
。
1 | Number.isInteger(10); |
Number.isSafeInteger() 方法
安全整数是可以精确表示为双精度数字的整数。
如果参数是安全整数,则 Number.isSafeInteger()
方法返回 true
。
1 | Number.isSafeInteger(10); |
安全整数是 -(253- 1) 至 +(253- 1).
这是安全的:9007199254740991。这是不安全的:9007199254740992。
0评论