JavaScript数字的二进制表示
JavaScript使用Number类型表示数字(整数和浮点数),遵循 IEEE 754 标准 通过64位来表示一个数字
- 第0位:符号位,0表示正数,1表示负数(s)
- 第1位到第11位:储存指数部分(e)
- 第12位到第63位:储存小数部分(即有效数字)f
运算过程
1.进制转换
由于IEEE 754尾数位数限制,需要将后面多余的位截掉。
2.对阶运算
由于指数位数不相同,运算时需要对阶运算 这部分也可能产生精度损失。
解决精度问题
1.将数字转成整数
2.三方库
1).Math.js
2).big.js
参考:
0.57 * 100 === 56.99999999999999 之谜
从0.1+0.2=0.30000000000000004再看JS中的Number类型