在学习python的隐式转换时偶然发现会有数据丢失的问题:
代码:
a = 1 b = 1.14 print(type(a), type(b)) a += b # 隐式转换 print(a, type(a))
结果:
<class 'int'> <class 'float'>
2.1399999999999997 <class 'float'>
(P.S. 另外我的环境是win10, python 3.6,想要自测的时候注意下。)
然后我进行了测试:
print(float(1)) print(1 + 1.1) print(1.0 + 1.14) print(1.00 + 1.14) print(1.01 + 1.14)
结果为:
1.0
2.1
2.1399999999999997
2.1399999999999997
2.15
发现问题似乎不在转换上
如果有急需纠错的人可以参考大佬教我的解决方法:
a = 1 b = 1.14 a += b print(float('%.2f' % a))
结果为:
2.14
简单来说就是保留两位小数
我打算在查些资料看看是哪里出了问题。