2009-12-06 10 views
3

cmath/math.h의 표준 cos 함수에 이상한 문제가 있습니다. 외관상으로는 상황에 따라 잘못되었거나 정의되지 않은 값을 반환합니다. COS에 대한 입력 값은 예컨대 1.5707964 경우 (이것은 -4.XYZe-009의 플로트 복식 사용시)cos가 잘못된 값을 반환합니까?

#include <cmath> 
#include <iostream> 

int main() 
{ 
double foo = 8.0 * 0.19634955; // 1.5707964 
double bla = std::cos(foo); // should be 0.9996242168245 
std::cout << bla << std::endl; // cos returns -7.32051e-008 

return 0; 
} 

는 COS가 -7.32051e-008를 반환한다.

나는 여기에 정말 기본적인 것을 놓치고 ...?

+2

(1)가 또 다른 SELECT가 파괴되지 않습니다. .. –

+2

당신은 어떤 가치를 기대 했습니까? 라디안이나도를 사용하기를 기대하십니까? – jalf

답변

23

cos은 라디안을 예상합니다. 입력 값에 3.14159/180을 곱하면 올바른 답을 얻을 수 있습니다.

+4

으시시 : 잘 했어. 표준 stackoverflow 에티켓은 올바른 경우 답변을 수락하는 것입니다. –

1

라디안 또는도를 통과하는지 알 수는 없습니다 ... 그러나 foo 값은 PI/2에 가깝습니다. 그래서 당신은 COS (foo는) = 0과 죄 (foo는) = 1 수 (예상 무엇을?)

2

COS (PI/2) = 0,

관련 문제