Math.sin()

Ripper11

Mitglied
Hallo,

ich habe da mal eine Frage bezüglich Tangens, Cosinus und Sinus. Wenn ich ein kurzes Programm schreibe nur mit der Ausgabe: System.out.println( Math.sin(2) ) kommt da immer 0.9092974268256817 raus. Wenn ich im Taschenrechenr Sin 2 eingib kommt da 0.034899 raus. Was muss ich machen, wenn ich das gleiche Ergebnis wie im Taschenrechner haben will?

Danke schonmal für die Antworten

Gruß Fabi
 
Hi,

probiers mal mit
Code:
System.out.println( Math.sin(2 / 180 * Math.PI) );
- Dein Taschenrechner wird die Winkelfunktionen im Gradmaß berechnen (lässt sich idr. aber umstellen).

Gruß
.
 
Hallo,
danke für deine schnelle Antwort. Wenn ich es so mache, wie Du es beschrieben hast kommt bei mir das Ergebnis 0.0 raus.

Gruß Fabi
 
Schau mal, ob es in Java eine Konstante für PI gibt (ich bin einfach mal davon ausgegangen). Google liefert jedenfalls:
Code:
sin((2 / 180) * PI) = 0.0348994967

Gruß

P.S. @reima: castet die VM automatisch nach int, wenn keine floats angegeben werden? Ich gebe zu, ich habe zu lange nichts mehr mit Java gemacht.
.
 
Hi,

danke. Wenn ich des so in meinen Taschenrechner eingib (2/180)*PI dann kommt des richtige Ergebnis raus. Aber ich kapier jetzt gar nix mehr. Wenn ich eingib: System.out.println(2/180) kommt auch als Ergebnis 0.0 raus. Nur wenn ich dann eingib 2*180 kommt 360 raus. Warum geht das jetz schon wieder nicht?
Aber danke für die Antwort

Gruß Fabi
 
Hallo,
ich danke allen dir mir bei meim Problem geholfen haben. Jetzt gehts. Ich habe nie 2.0 geschrieben sonder nur 2. Ich hab das wohl bei dem Beispielcode übersehen.
Wie geht das dann bei Math.tan() und Math.cos?

Danke an alle:-)

Gruß Fabi
 
Zuletzt bearbeitet:
Hallo,

es macht einen Unterschied, ob du System.out.println(2/3) schreibst, oder System.out.println( 2.0/3). Bei der 1. Anweisung wird ein kleinerer Integer durch einen größeren geteilt, was immer 0 ergibt, da ein Integer keine Nachkommastellen speichern kann.

Bei der 2. Anweisung wird ein Float durch einen Integer geteilt, was wiederum einen float ergibt. Ein float kann Nachkommastellen speichern -> du bekommst eben 0,666666...

Gruß
Udo
 
Hallo!

Bei der 2. Anweisung wird ein Float durch einen Integer geteilt, was wiederum einen float ergibt. Ein float kann Nachkommastellen speichern -> du bekommst eben 0,666666...
Das stimmt so nicht ganz. Zahlen-Literale mit einem '.' sind in Java immer double. Wenn man ein solches Zahlenliteral als float haben möchte muss man dieses auch explizit mit einem nachgestellten F / f kennzeichnen.
-> double d = 1.0;
float f = 1.0F; oder 1.F oder 1.0f oder 1.f
etc.

Gruß Tom
 
Zurück