# Math.sin()



## Ripper11 (5. Januar 2007)

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


----------



## Tobias Menzel (5. Januar 2007)

Hi,

probiers mal mit
	
	
	



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

Gruß
.


----------



## Ripper11 (5. Januar 2007)

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


----------



## Tobias Menzel (5. Januar 2007)

Schau mal, ob es in Java eine Konstante für PI gibt (ich bin einfach mal davon ausgegangen). Google liefert jedenfalls: 
	
	
	



```
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.
.


----------



## Matthias Reitinger (5. Januar 2007)

Hallo,

probier's mal so:

```
System.out.println( Math.sin(2.0 / 180 * Math.PI) );
```

Grüße,
Matthias


----------



## Ripper11 (5. Januar 2007)

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


----------



## Matthias Reitinger (5. Januar 2007)

Hallo,



Ripper11 hat gesagt.:


> Aber ich kapier jetzt gar nix mehr. Wenn ich eingib: System.out.println(2/180) kommt auch als Ergebnis 0.0 raus.


Dann ist dein Java kaputt, bei mir kommt da nämlich 0 raus.

Grüße,
Matthias


----------



## Ripper11 (5. Januar 2007)

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


----------



## Agnus (6. Januar 2007)

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


----------



## Thomas Darimont (6. Januar 2007)

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


----------

