背景
- 聊下Java和js的数值类型,这个地方也是开发中容易出错的地方。
- IEEE 754 浮点“双精度格式” 标准。
资料
- 计算机只存储和运算都是二进制数据。我们常用的十进制数据在存储和运算的时候需要转换为二进制。
- js 没有java的整数和浮点值的概念,统一用的number类型。
以js number 64位双精度结构:

- sign 1个符号位 代表正负
- exponent 11个指数位 代表指数信息
- fraction 52个尾数位 代表数值信息
1 | 举个例子,如果是5.5这个数字的话,则计算过程是这样的: |

- js 不丢失精度的最大值就是2的52次方减去1 如果超过这个值并且小于 MAX_VALUE,可用表示但是精度会丢失.