2009-12-06 4 views
3

J'ai un problème étrange avec la fonction cos standard de cmath/math.h. Apparemment, dans certaines circonstances, il renvoie une valeur erronée ou simplement indéfinie.cos renvoie des valeurs erronées?

#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; 
} 

Si la valeur d'entrée pour cos est 1,5707964 par exemple, cos renvoie -7.32051e-008 (lors de l'utilisation double, avec des flotteurs il est -4.XYZe-009).

Ai-je manqué quelque chose de vraiment basique et simple ici ...?

+2

Encore une autre SELECT ne se décompose pas. .. –

+2

Alors, quelle valeur attendiez-vous? Attendez-vous qu'il utilise des radians ou des degrés? – jalf

Répondre

23

cos attend des radians, vous lui donnez des degrés. Multipliez votre valeur d'entrée par 3,14159/180, et vous obtiendrez la bonne réponse.

+4

Spooky: heureux que cela a fonctionné. L'étiquette de stackoverflow standard est d'accepter la réponse si elle est correcte. –

1

Je ne sais pas si vous passez le radian ou les degrés ... Mais votre valeur de foo est proche de PI/2. Ainsi, vous obtenez cos (foo) = 0 et sin (foo) = 1 (ce que vous attendiez?)

2

cos (PI/2) = 0, pas 1.

Questions connexes