2017-10-16 7 views
0

Ich habe versucht, polares Array mit Mathematik-Modul zu erstellen; aber math.sin (math.pi) geben immer falsches Ergebnis. mit Python 2.7 oder 3.5 das gleiche falsche Ergebnis:Sin pi: falsches Ergebnis geben

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 

dies ist mein Code und der gleiche Fehler:

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) 

die im Kommentar erwähnten Fäden Erklärung gibt keine Lösung; also brauche ich keine erklärung wie und warum ohne lösung mein problem zu lösen und die antwort von cody gibt mir die lösung. Wenn Sie denken, dass die anderen Threads die Antwort Erwähnung in diesen Threads zeigen, die doppelt vorhanden sind.

+0

danke ich werde überprüfen, dass – seghier

Antwort

1

Da pi eine irrationale Zahl ist und ewig andauert, ist die Python-Version nicht wirklich pi. Als Ergebnis ist die Sünde almost-pialmost-0. Im Grunde können Sie es mit einem Python-Rundungsfehler abgleichen.

Hier einige weitere Informationen zum Thema im Allgemeinen:

Floating Point Arithmetic: Issues and Limitations

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

Ich schlage vor, Sie einige Runden setzen in den nächsten N-Einheiten, die für Ihr Modul genügt. Der numerische Wert von dem, was Sie haben, ist 0.000000000000000122. Fünf Stellen nach dem Komma sollten für fast alles gut sein, für das Sie das Modul brauchen könnten.

+0

danke für die informationen werde ich es versuchen – seghier

Verwandte Themen