Entwickler-Ecke

Sonstiges (Delphi) - Sinus und Cosinus Bug !?


sushi - So 17.11.02 16:29
Titel: Sinus und Cosinus Bug !?
Delphi liefert für alle Winkel außer 0 den falschen Sinus und Cosinus !
Sprich sin(45) ist zB 0.85... anstatt dem richtigen Wert 0.707... :?

Hat jemand auch das Problem oder weiss jemand wie ich das beheben kann ?!


tommie-lie - So 17.11.02 16:38

Hat seine Richtigkeit!
0.850... ist der Sinus von 45 im Bogenmaß (rad).
Probier's mal mit sin(DegToRad(45)), wobei 45 dann der Winkel im Winkelmaß sind. Dann wird er erst ins Bogenmaß umgewandelt und dann der Sinus rausgeholt.


sushi - So 17.11.02 16:52

Danke, jetzt funzt es !
Aber warum liefert delphi bei Vielfachen von 90° komische Werte ?!


tommie-lie - So 17.11.02 18:14

keine Ahnung.
Was liefert er denn für Werte?


Wolff68 - So 17.11.02 21:32

Also unter 'komischen Werten' verstehst Du warscheinlich, daß er bei sinus(180) nicht 0, sondern -5,42101086242752E-20 ausgibt, oder? [-5,42E-20 ist die Wissenschaftliche Notation für 0,00000000000000000005421]
Das sind Rundungsfehler! Nehm mal Deinen normalen Taschenrechner, zieh aus einer Zahl 10 mal den Sinus und dann wieder 10 mal mit ArcSin zurück. Da kommst auch selten bei Deiner ursprünglichen Zahl an :-(

Am einfachsten ist, wenn Du das Ergebnis ein bischen rundest...
Mathematisch zwar nicht gerade das gelbe vom Ei, aber wenn Du nicht gerade 20 Nachkommastellen brauchst durchaus machbar.
Wenn Du das Ergebnis zB immer mit RoundTo(Zahl,-16) auf 16 Nachkommastellen rundest sollte dieses Problem behoben sein.


sushi - Mo 18.11.02 14:22

Danke es klappt ! :)