2017-10-16 8 views
0

나는 수학 모듈로 극좌표 배열을 만들려고했습니다. 그러나 math.sin (math.pi) 항상 잘못된 결과를 제공합니다. 파이썬 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