参见英文答案 > Floating point behavior in Python 2.6 vs 2.7 1个
如果我在python2.7控制台上运行它,它给我输出为:
>>> 1.2 - 1.0
0.19999999999999996
>>> print 1.2 - 1.0
0.2
我在python3.5.2中运行相同的操作
>>> 1.2 - 1.0
0.19999999999999996
>>> print(1.2 - 1.0)
0.19999999999999996
我想知道为什么在python2.7.12打印语句只给我0.2但在python3.5.2打印函数给我0.19999999999999996.
最佳答案
这不是由于打印的变化,而是浮动的__str__函数的变化,它隐式调用.因此,当你打印时,它会调用如下:
# For Python 2.7
>>> print (1.2 - 1.0).__str__()
0.2
>>> print (1.2 - 1.0).__repr__()
0.19999999999999996
有关更多详细信息,请查看Martjin’s answer on Floating point behavior in Python 2.6 vs 2.7,其中说明:
In Python 2.7 only the representation changed,not the actual values. Floating point values are still binary approximations of real numbers,and binary fractions don’t always add up to the exact number represented.