js根据IEEE754标准使用双精度浮点数(double float)表示数字number
存储方式
- 符号位(1)+ 指数位(11)+ 尾数位(52)
- 符号位0表示正1表示负 指数位表示指数部分 尾数位表示尾数部分
精度问题
- 由于使用了浮点数 所以计算小数的时候有可能丢失精度(指数位)
- 解决办法
- 将等式两边小数位转为整数位
- 使用第三方库比如Math.js
- 使用Number.EPSILON来比较等式两边的差值的绝对值
- 四舍五入
进制
十进制
11..11e3
二进制
0b1
八进制
0o7
16进制
0xf
数字使用原型方法
- 0 .toString() 或者 (0).toString() toFixed等都同理
安全整数范围
- Number.MIN_SAFE_INTEGER ~ Number.MAX_SAFE_INTEGER (-2^53 到 2^53)
bigInt
- 可以计算大数字不丢失精度