4.2+2.1 等于什么?
肯定等于6.3啊?真的是这样吗? 你去命令行试一下吧
怎么样,结果是这个:6.300000000000001
这些错误是由底层CPU和IEEE 754标准通过自己的浮点单位去执行算术时的特征。 由于Python的浮点数据类型使用底层表示存储数据,因此你没办法去避免这样的误差。
所以,浮点数比较并不是简单的 == 就可以了,如果你想更精确的表示,可以用decimal 模块
In [2]: from decimal import Decimal In [3]: a = Decimal('4.2') In [4]: b = Decimal('2.1') In [5]: a + b Out[5]: Decimal('6.3') In [6]: print(a+b) 6.3 In [7]: (a+b) == 6.3 Out[7]: False In [8]: (a+b) == Decimal('6.3') Out[8]: True In [9]: (4.2+2.1) == Decimal('6.3') Out[9]: False