python2.7.5中的浮点精度变化

2024-05-23 22:54:09 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我在Python2.7.5控制台中运行以下代码:

>>> import math
>>> math.radians(0.000001)

我明白了

^{pr2}$

但是,如果我将相同的代码放在一个文件中: 在

^{3}$

运行它,我得到:

$ python.exe floatingtest.py
1.74532925199e-08

为什么在脚本中运行代码与在控制台中运行代码时浮点精度有差别?

(Python3.3似乎没有这个“问题”。两种方法都返回相同的高精度值。)


Tags: 文件方法代码pyimport脚本精度math
2条回答

它与精度无关,只与表示法有关:

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'

这是reprstr之间的区别:

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

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

相关问题 更多 >