簡體   English   中英

Python 2.7.5中的浮點精度變化

[英]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似乎沒有這個“問題”。兩種方式都返回相同的高精度值。)

這是reprstr之間的區別:

>>> 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM