La réponse de cette fonction est retournée dans la fonction principale du programme, et cela fonctionne très bien. Le problème est que toute valeur où le cosinus devrait être 0, il s'avère que cela donne un nombre irrationnel étrange (quelque chose comme 1.30431912 * 10^-13). Donc, 90, 450, et ainsi de suite, tous donnent des réponses irrationnelles. Quel est le problème?Réponse de la fonction est incorrecte
float cosineDegrees() {
string i;
double iDouble;
cout << "Give me a number to find the value of degrees in. ";
getline(cin, i);
iDouble = stod(i);
double PI = 3.14159265359;
float answer = cos((PI/180)*iDouble);
return answer;
}
pi n'est pas exactement 3.14159265359, n'est-ce pas? – stijn
1.30431912 * 10^-13 n'est pas irrationnel. C'est parfaitement rationnel, mais très proche de zéro. C'est aussi proche de zéro que vous êtes susceptible d'obtenir. Voir aussi [Est-ce que le calcul à virgule flottante est rompu?] (Http://stackoverflow.com/questions/588004/is-floating-point-math-broken). – molbdnilo