如果我在 Python 2.7.5 控制台中运行以下代码:
>>> import math
>>> math.radians(0.000001)
我得到
1.7453292519943295e-08
但是,如果我将相同的代码放在文件中:
$ cat floatingtest.py
import math
print(math.radians(0.000001))
运行它,我得到:
$ python.exe floatingtest.py
1.74532925199e-08
为什么在脚本中运行代码与在控制台中运行代码时浮点精度存在差异?
(Python 3.3似乎没有这个"问题"。两种方式返回相同的高精度值。
这是
repr
和str
之间的区别:
>>> repr(math.radians(0.000001))
'1.7453292519943295e-08'
>>> str(math.radians(0.000001))
'1.74532925199e-08'
默认情况下,print
调用str
其参数,但 REPL 在没有赋值时使用 repr
显示对象(并且返回值未None
)。
它与精度无关,仅与表示有关:
In [1]: import math
In [2]: math.radians(0.000001)
Out[2]: 1.7453292519943295e-08
In [3]: print math.radians(0.000001)
1.74532925199e-08
In [4]: str(math.radians(0.000001))
Out[4]: '1.74532925199e-08'