[英]Floating point precision variation in Python 2.7.5
如果我在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'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.