Sinus in C++
-
Hey ich hab in meine Programm den Sinus einer Zahl ausrechnen wollen und das die Funktion sin(double) gibt ja standardmässig in Radiant aus.
Für Radiant ist das Ergebnis natürlich richtig aber da ich es auch in Grad haben möchte hab ich mir das mal so gedacht:(sin(zahl1)*180)/3.1415926535Also das Bogenmaß*180/PI
Aber mir kommt demnach für Sinus von 90 nur 51.22 heraus anstatt 1 -.-
Wo ist mein Problem?
-
Du musst das Argument vom Sinus, d.h. in deinem Fall zahl1 in Radian angeben.
Und fuer PI solltest du schon eine Konstante definieren. Am besten berechnest du zu Beginn gleich die Umrechnungsfaktoren von Deg to Rad und umgekehrt.
Hier mal in Code:
const double PI = 3.1415926535; const double Deg_To_Rad = PI / 180.0; int main() { cout << sin(90 * Deg_To_Rad) << endl; }
-
icarus2 schrieb:
Du musst das Argument vom Sinus, d.h. in deinem Fall zahl1 in Radian angeben.
Und fuer PI solltest du schon eine Konstante definieren. Am besten berechnest du zu Beginn gleich die Umrechnungsfaktoren von Deg to Rad und umgekehrt.
Hier mal in Code:
const double PI = 3.1415926535; const double Deg_To_Rad = PI / 180.0; int main() { cout << sin(90 * Deg_To_Rad) << endl; }Hä? Mach doch gleich eine Funktion toRadian, oder mysin...
Edit: Code war falsch, siehe zwei weiter unten...

-
Hacker schrieb:
Hä? Mach doch gleich eine Funktion toRadian, oder mysin...
Joar, kann man auch wenn man moechte.
Allerdings ist dein Code noch ambiguous.
-
icarus2 schrieb:
Hacker schrieb:
Hä? Mach doch gleich eine Funktion toRadian, oder mysin...
Joar, kann man auch wenn man moechte.
Allerdings ist dein Code noch ambiguous.
Mein Code ist total falsch, meinst du.
#include <iostream> #include <complex> const double PI = 3.1415926535; template<typename type> type toRadian(type temp) { return (temp / 180) * PI; } int main() { std::cout << std::sin(toRadian((long double)90)) << '\n'; }Habe mich vertan, tschuldigung
so ists richtig
Obwohl, Templates sind hier unnötig. Lieber ohne casterei und gleich einlong double, oder?
-
Am besten gleich mit
cout << sin(toRadian(90.0)) << '\n';Das sollte dann funktionieren fuer das Template.
Ja, ich denke auch ein Template ist in diesem Fall etwas Overkill. Fuer seinen Fall duerfte eine double toRadion(double deg) Funktion reichen.