最近有个需求,把原来的整数计算改成小数计算,保留一位小数。因此,根据需求,将数据结构由int改为float,计算时使用round()方法保留小数位。第一版代码如下:a=0.1000001b=round(a+0.1,1)c=0c+=round(a,1)修改完成后发现b的结果是正确的,但是c明明是Round(a,1)一直保留一位小数,但是最后的结果会是0.30000000000000004。事实上,c+=round(a,1)等价于c=c+round(a,1),所以经过多次计算,由于增加了float类型,c从int变成了float,我们知道,在计算机中,浮点型的精度有限,无法准确表示,只能用一个近似值代替,而用这些近似值代替的浮点数时运算,这些近似值本质上都是参与运算,出来的结果是一个近似值。所以最终的代码应该是:a=0.1000001b=round(a+0.1,1)c=0c=round(c+a,1)
