计算机是使用二进制运算的,程序中的十进制会先转为二进制,在进行运算。
我们先来看看十进制的浮点数在计算机是怎样转换为二进制的
整数转整数,小数转小数
整数转整数机制与十进制整型转二进制一致
小数转小数是将小数部分乘以2,如果结果大于1.0,则将取整数部分1按顺序写道小数点后,如果结果小于1.0,则将取整数部分0按顺序写道小数点后,直至结果等于1.0结束
举例:0.2(十进制)
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.4*2=0.8 取整数部分:0
0.8*2=1.6 取整数部分:1
0.6*2=1.2 取整数部分:1
.
.
.
.
根据演算过程,不难想象,它会无限循环0011这个结果,所以计算机在遇到这种情况下,都是取无限接近于原值的近似值,从而导致出现精度损失的情况。