Anfängerfrage zu Math.cos bzw Math.sin

sonnengott1980

Grünschnabel
Hallo Leute,

ich hab gerade ein kleines Programm um paar Berechnungen am kreis zu machen geschrieben und bin dabei auf einen kleines Problem gestoßen.

Ich erspar euch die Einzelheiten eins Beispieles:
Nur so weit: Ich berechen den cos(270°) mit Math.cos(270*Math.PI/180.0);
Wenn mich nicht alles täuscht, sollte es 0.0 werden.
Leider ist das nicht so!
Mein Ergebnis:
-1.8369701987210297E-16
Mir ist klar das 10^-16 kleiner ist als der Durchmesser eines Atomkerns mit 10^-14m uns somit recht klein ist und sozusagen gegen 0.0 geht. Aber so richtig richtig ist es halt doch nicht.

Hat einer von euch vielleicht ne kurze Erklärung für mich.

Dank

Christian
 
Hallo,

dein Ergebnis liegt daran, dass die Floating-Point Operationen in Math nicht immer ganz genau sind (steht auch bei den entsprechenden Funktionen im Javadoc).
Am Bestens benutzt du Math.round() um die Ergebnisse zu runden. Da die Ungenauigkeit immer nur in den letzten paar Stellen ist und round ein long zurück gibt, hast du dann ein exaktes Ergebnis.
 
Zurück