3

如果我在 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 似乎没有这个“问题”。两种方式都返回相同的高精度值。)

4

2 回答 2

5

repr这是和之间的区别str

>>> repr(math.radians(0.000001))
'1.7453292519943295e-08'
>>> str(math.radians(0.000001))
'1.74532925199e-08'

默认情况下,print调用str其参数,但 REPLrepr在没有赋值时显示使用的对象(并且返回值不是None)。

于 2013-10-23T08:18:47.423 回答
3

它与精度无关,仅与表示有关:

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'
于 2013-10-23T08:18:43.317 回答