没问题,这个神秘数字 9007199254740991 就是
来看看为什么这个数字是最大安全整数,因为如果比这个数更大,尾数位已经全部是 1 了,只能增大指数、
探秘 JavaScript 世界的神秘数字 1.7976931348623157e+308
https://cloud.tencent.com/developer/article/2112444
特殊值 0,Infinity,NaN
刚才提到了,指数部分全为 1 或者全为 0 会有特殊作用,我们先来看看 3 组特殊值。
0:指数位全 0,尾数位也全是0,则表示 ±0
[图片上传失败...(image-3143e5-1712891395995)]
∞:指数全 1,尾数全 0,则表示 ±∞,也就是 Number.POSITIVE_INFINITY
和 Number.NEGATIVE_INFINITY
[图片上传失败...(image-281878-1712891395995)]
NaN:指数全1,尾数不全为 0,则表示非数字 NaN
最小精度 Number.EPSILON
我们来看看最后一个神秘数字 Number.EPSILON,2.220446049250313e-16 是如何来的。
Number.EPSILON === 2**-52 // true
回到那道经典题目 “0.1 + 0.2 为什么等于 0.30000000000000004”
可以看到,0.1 和 0.2 转为二进制都是无限循环小数,转为 64 位浮点数会有精度损失,我们来转换一下: