1 基础
1.1 极值
JS采用IEEE 754
标准的64位双精度格式存储数值。
数值的精度最多可达到53
个二进制位(1个隐藏位和52个有效位)。
如果数值的精度超过此限度,第54
位及后面的会被丢弃。
数值的极值分为两种:可表示的极值和可精确计算的极值(浮点型不算)。
可表示的极值:[5e-324, 1.7976931348623157e+308]
。
可精确计算的极值:[1 - Math.pow(2, 53), Math.pow(2, 53) - 1]
。
超过精度的数值可正确显示,但由其计算得出的结果可能不准确。
let num = 9007199254741002;
console.log( num ); // 9007199254741002
console.log( num + 1 ); // 9007199254741004
console.log( num + 3 ); // 9007199254741004
let n1 = Math.pow(2, 53) - 1 + 1 + 1;
let n2 = Math.pow(2, 53) - 1 + 1 + 2;
console.log(n1 === n2); // true
对于整数,最多能精确显示16
个十进制位,超过会被截断。
对于小数,最多能精确显示小数点后16
个十进制位,超过会被截断。
超过的位数会被截断。
console.log( 3.000000000000001 === 3 ); // false
console.log( 3.0000000000