项目地址:github.com/wangxiaofei…git
计算机运算时二进制的,而有些浮点数转换成二进制的时候是无限循环的,eg: 0.1github
0.1 * 2 = 0.2 # 0
0.2 * 2 = 0.4 # 0
0.4 * 2 = 0.8 # 0
0.8 * 2 = 1.6 # 1
0.6 * 2 = 1.2 # 1
0.2 * 2 = 0.4 # 0
.....
复制代码
但计算机内存有限,咱们不能用储存全部的小数位数,达到某个精度点会直接舍弃;有些偏差能够相互抵消,可是有些就会相互叠加,这就形成了0.1+0.2!=0.3bash
1.12 => {left: 1, right: 12, length: 2}
1.1 => {left: 1, right: 1, length: 1}
-1.12 => {left: -1, right: -12, length: 2}
复制代码
1.12 => {left: 1, right: 12, length: 2}
1.1 => {left: 1, right: 10, length: 2}
复制代码
除法自己就有除不尽的时候spa
这样作后方法可计算的范围将大大变小,好比: 假如系统最大运算的数字是整数部分32位,小数部分32位,在这种前提下作加法运算的位数将缩小一半,最大能支持的是小数和整数部分一块儿是32位的数字。code