2012-08-15 3 views
2

가능한 중복 :
Why doesn't sin() return the correct value here?SINF() 사인, 코사인()

내가 사인 (sinf()) 및 코사인 같은 수학 연산을 수행 할 응용 프로그램을 건물입니다 (cost())에 floats. 이제 sinus를 90으로 계산하려고 시도했을 때 (1), 나는 0.89의 결과를 얻었습니다 ... 이것은 틀리게 잘못되었습니다. 결과가 왜 그렇게 떨어져있는 이유가 있습니까? 그것을 향상시킬 수있는 방법이 있습니까? 나는 float 대신 double을 사용해 보았고 같은 대답을 얻었습니다 ... 시뮬레이터에서 실행했을 때와 같을 뿐이며 실제 iPhone에서 제대로 작동합니까? 마지막으로 GCMathParser 또는 DDMathParser과 같은 수학 파서를 사용하면 결과의 정확도가 향상됩니까?

감사 :]

언제나
+0

나는 그것의 삼각 함수의 사용 라디안 알고있는 모든 언어. – duffymo

+0

저는 MATLAB을 수학 프로그래밍에 사용하는 데 익숙하며 MATLAB도는 sin() 및 cos() 메서드에서 사용됩니다. – byteSlayer

+0

나는 그렇게 생각하지 않는다. ... – duffymo

답변

7

문제는 각도가 아닌 90 라디안의 사인을 얻는 것입니다. 시도하십시오 sin (M_PI_2) for 90 °

함수는 각도가 아닌 라디안을 사용합니다.

라디안 사용도 * π/180도 변환하려면, 그래서 당신은/2 또는 M_PI_2

Why doesn't sin() return the correct value?

6

sinfcosf 함수는 라디안을 사용합니다. 먼저 변환해야합니다 :

float result = sinf(yourDegree/180 * M_PI); 
1

삼각 함수 π을 감소 죄 같은 (90 * M_PI/180)을 수행 할 수 있습니다 objective-c는 라디안 단위의 각도를 취합니다. 인수를도 (degree)로 표시합니다. 90 라디안의 죄는 0.89입니다.

은 다음을 참조하십시오

http://www.wolframalpha.com/input/?i=sin%2890+rad%29

단순히 180 도의 #을 분할 각도로 변환하고, 파이를 곱 위해

한 번 변환 (3.14159는 근사치로 충분)의 대답은 예상대로 1입니다.

http://www.wolframalpha.com/input/?i=sin%2890 * 파이 %의 2F180 + 방사선 %의 29