2017-10-16 120 views
0

我試圖用數學模塊創建極座標數組;但math.sin(math.pi)總是給出錯誤的結果。 與Python 2.7或3.5相同的錯誤的結果:Sin pi:給出錯誤結果

import math 
m = math.radians(180) 
print (math.sin(m)) 
pi = math.pi 
print (pi) 
print (math.sin(pi)) 

1.2246467991473532e-16 
3.141592653589793 
1.2246467991473532e-16 

這是我的代碼和同樣的錯誤:

import math 

a = 180 #(degree) 

r = 10 
n = 8 
b = float(a)/n 

pi = math.radians(180) 
print math.sin(pi) 

for i in range(0,2*n+1): 
    print i 
    c1 = b*i 
    print c1 
    c2 = c1*math.pi/a #c : radians 
    print c2 
    sinb = math.sin(c2) 
    cosb = math.cos(c2) 
    x = r*sinb 
    y = r*cosb 
    #print (x, y) 

在評論中提到的線程給予的解釋不解決方案所以我不需要解釋如何以及爲什麼沒有解決方案來解決我的問題,從科迪的答案給我的解決方案。 如果您認爲其他線程在這些線程中顯示的答案是重複的。

+0

謝謝,我會檢查 – seghier

回答

1

由於pi是一個無理數並且會一直持續下去,所以Python版本實際上並不是確切的pi。因此,almost-pi的罪名是almost-0。基本上你可以把它記錄爲一個Python舍入錯誤。

下面是一般的話題一些更多的信息:

Floating Point Arithmetic: Issues and Limitations

why am I getting an error using math.sin(math.pi) in python?

我建議你把一些舍入到最近的N個單位,將足以滿足您的模塊。你得到的數值是0.000000000000000122。小數點後的五位數字對於您可能需要該模塊的幾乎任何東西都應該很好。

+0

謝謝你的信息,我會嘗試它 – seghier