Why does the print function in Python3 round a decimal number?
本问题已经有最佳答案,请猛点这里访问。
如果我在python2.7控制台上运行following,它会给出如下输出:
1 2 3 4 5 | >>> 1.2 - 1.0 0.19999999999999996 >>> print 1.2 - 1.0 0.2 |
当我在python3.5.2运行相同的操作时
1 2 3 4 5 | >>> 1.2 - 1.0 0.19999999999999996 >>> print(1.2 - 1.0) 0.19999999999999996 |
我想知道为什么在python2.7.12 print语句中只给出0.2,而在python3.5.2 print函数中给出0.199999999999996。
不是由于
1 2 3 | # For Python 2.7 >>> print (1.2 - 1.0).__str__() 0.2 |
为了按原样显示浮动值,可以显式调用
1 2 | >>> print (1.2 - 1.0).__repr__() 0.19999999999999996 |
有关详细信息,请查看martjin对python 2.6和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.
肾盂2.7轮中的