python round保留小数位_Python-其他-round()保留小数位时遇到的问题

最近有一个需求,原有整数计算,改成小数计算,保留一位小数。 于是按照需求,将数据结构由 int 改为 float ,计算时采用round()方法来保留小数位。

第一版代码如下:

a = 0.1000001

b = round(a+0.1,1)

c = 0

c += round(a,1)

复制代码

修改完成后进行测试,多次测试过程中发现,b 结果正确,但 c 明明已经使用了round(a,1)保留一位小数,但最后的结果会出现 0.30000000000000004 这样的结果。

实际上c += round(a,1) 是等同于 c = c + round(a,1),这样在多次计算之后,c 因为加上了 float 类型,从 int 变成了 float,而我们知道,在计算机中,浮点型的精度是有限的,它无法准确的表示,只能用一个近似值代替,而当使用这些近似值代替的浮点数进行运算时,本质上是这些近似值参与运算,出来的结果也就是近似结果。

所以最终代码应该为:

a = 0.1000001

b = round(a + 0.1, 1)

c = 0

c = round(c + a, 1)

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理

想要获取更多Python学习资料可以加QQ:2955637827私聊或加Q群630390733大家一起来学习讨论吧!

你可能感兴趣的:(python,round保留小数位)