Pre*_*ain 5 python python-2.7 python-3.x
如果我在python2.7控制台上运行它,它给我输出为:
>>> 1.2 - 1.0
0.19999999999999996
>>> print 1.2 - 1.0
0.2
Run Code Online (Sandbox Code Playgroud)
我在python3.5.2中运行相同的操作
>>> 1.2 - 1.0
0.19999999999999996
>>> print(1.2 - 1.0)
0.19999999999999996
Run Code Online (Sandbox Code Playgroud)
我想知道为什么在python2.7.12打印语句只给我0.2但在python3.5.2打印函数给我0.19999999999999996.
这不是由于 print 隐式调用的函数发生变化,而是由于 print 隐式调用的函数print发生变化。因此,当您进行打印时,它会发出如下调用:__str__floats
# For Python 2.7
>>> print (1.2 - 1.0).__str__()
0.2
Run Code Online (Sandbox Code Playgroud)
为了按原样显示浮动值,您可以显式调用.__repr__:
>>> print (1.2 - 1.0).__repr__()
0.19999999999999996
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请查看Martjin对 Python 2.6 vs 2.7 中的浮点行为的回答,其中指出:
在 Python 2.7 中,仅表示形式发生变化,实际值并未发生变化。浮点值仍然是实数的二进制近似值,并且二进制分数并不总是加起来等于所表示的精确数字。
| 归档时间: |
|
| 查看次数: |
385 次 |
| 最近记录: |