为什么Python3中的print函数是十进制数?

前端之家收集整理的这篇文章主要介绍了为什么Python3中的print函数是十进制数?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

参见英文答案 > 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

为了按原样显示浮动值,您可以显式调用.__ repr__:

>>> 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.

@H_404_47@ 原文链接:https://www.f2er.com/python/438673.html

猜你在找的Python相关文章