js number 实现标准
JavaScript 数字实现标准
JavaScript 中的数字遵循 IEEE 754 标准,采用双精度浮点数格式(64位)。这种格式将数字分为符号位、指数位和尾数位,具体结构如下:
- 符号位(1位):表示数字的正负,0 为正,1 为负。
- 指数位(11位):表示数字的指数部分,采用偏移码表示(偏移量为 1023)。
- 尾数位(52位):表示数字的小数部分,隐含一个前导的 1(即实际精度为 53 位)。
数字范围与精度
- 最大安全整数:
Number.MAX_SAFE_INTEGER(2^53 - 1,即 9007199254740991)。 - 最小安全整数:
Number.MIN_SAFE_INTEGER(-2^53 + 1,即 -9007199254740991)。 - 最大正数:
Number.MAX_VALUE(约 1.7976931348623157e+308)。 - 最小正数:
Number.MIN_VALUE(约 5e-324,表示最接近 0 的正数)。
超过安全整数范围的运算可能导致精度丢失。

特殊值
JavaScript 定义了以下特殊数字值:
NaN(Not a Number):表示非数字值,例如0 / 0。Infinity和-Infinity:表示正负无穷大,例如1 / 0。+0和-0:虽然值相等,但在某些场景(如1 / +0和1 / -0)会分别得到Infinity和-Infinity。
数字表示方法
数字可以通过多种方式表示:

- 十进制:直接书写,如
42、3.14。 - 科学计数法:如
1e3(即 1000)。 - 二进制:前缀
0b,如0b1010(即 10)。 - 八进制:前缀
0o,如0o755(即 493)。 - 十六进制:前缀
0x,如0xFF(即 255)。
数字运算与精度问题
由于浮点数的特性,某些运算可能产生精度问题:
0.1 + 0.2 === 0.3; // false
解决方法包括使用 toFixed 或引入高精度库(如 big.js)。
数字类型检测
typeof 42返回"number"。Number.isInteger(42)检测是否为整数。Number.isSafeInteger(9007199254740992)检测是否在安全范围内。
数字转换
Number("42")将字符串转换为数字。parseInt("42px")和parseFloat("3.14")解析字符串中的数字部分。
JavaScript 的数字实现标准确保了广泛的数值表示能力,但也需要注意其精度限制和特殊值的处理。






