Sinus Funktion in math.h
-
Moin,
Ich versuche gerade mit math.h die Sinus Funktion zu benutzen,
jedoch ist mir aufgefallen, dass sie gar nicht richtig funktioniert.Der Sinus von 30° beträgt 0.5
Wenn man aber sin(30) eingibt kommt aber 0.988 raus.
Ist math.h falsch, oder habe ich irgendwetas nicht beachtet?hoffe auf baldige Antwort
-
Die Funktion arbeitet nicht mit Grad.
-
Oh.......
jetzt wird mir einiges klar :ro
-
Gibt es auch eine Header oder Lib wo man bei Sinus usw auch Winkel in Grad angeben kann?
Für meine Zwecke ist das mit den Radian umrechnen nämlich zu ungenau.
(oder sieht zumindesten unschön aus, wenn da 4.9999999 statt 5 steht)mfg
-
#define PIOVER180 3.1415926/180 sin(angle*PIOVER180) cos(angle*PIOVER180)
-
Versuchs mal mit
FloatToStrF(long double value, TStringFloatFormat format, int
precision, int digits);oder Console
cout.width(int)
cout.precision(int)
-
xindon schrieb:
#define PIOVER180 3.1415926/180 sin(angle*PIOVER180) cos(angle*PIOVER180)
pi ist in math.h definiert mit M_PI
-
xindon schrieb:
#define PIOVER180 3.1415926/180
das ist zu ungenau
AntonXP schrieb:
pi ist in math.h definiert mit M_PI
und das ist nicht garantiert. In meinem math.h z.B. nicht!
Besser ist:
#include <cmath> const double PI = std::acos( -1.0 );
Gruß
Werner
-
xindon schrieb:
#define PIOVER180 3.1415926/180 sin(angle*PIOVER180) cos(angle*PIOVER180)
jeder "#define" befehl wird vom precompiler durch den jeweiligen wert ersetzt. wodurch in diesem fall das programm bei jedem aufruf von "sin(angle*PIOVER180)" "3.1415926/180" ausrechnen muss. es sei denn, der compiler optimiert das ganze, worauf man sich aber nicht verlassen sollte.
es bietet sich vielleicht auch an, eine look-up-table zu erstellen, falls du nur mit geraden zahlen arbeitest. ansonsten ne eigene klasse mit festen nachkommawerten schreiben ;).
-
AntonXP schrieb:
pi ist in math.h definiert mit M_PI
Nö. Mal ganz abgesehen davon, dass math.h in C++ missbilligt wird.
-
Hallo,
AntonXP nutzt wohl einen Borland-Compiler (wegen M_PI aus Math und FloatToStrF aus Sysutils.h).