想搞明白这个问题 去看 计算机 数值计算 这方面的知识, 计算机专业有一门课专门研究这方面的问题。
要想避免这种情况
1、用round 取尾数
2、 在python 里有个库 decimal , 专门解决这个问题
机器码在小数点后可能有一些精度上的问题,有些比较小的数计算机只能以逼近的方法来表示,你计算一下0.1+0.2看看结果是不是和自己算的有出入。
一般来说二进制小数点后的数都按以(1/2)的位数次方求和来表达,在长度有限的机器码下你试试看是不是有很多的小数不能精确表达。
答案没问题的,就是精度误差,因为它是转换成二进制计算的,但不是乱码,你四舍五入就是正确答案