# Cosinus berechnen -> Umrechnung in Bogenmaß



## equin (27. Okt 2010)

Hallo,

ich will den Cosinus von einem Winkel berechnen. Ich habe gelesen, dass die java-cosinus-funktion den Winkel in Bogenmaß erwartet. Also rechne ich den Winkel mittels "Bogenmaß = Grad * PI / 180" um... aber trotzdem bekomme ich falsche Werte. Hier noch der Quelltext: 


```
double winkel = 90;
double cos = Math.cos(winkel*Math.PI/180);
System.out.println(cos);
```

Was mache ich falsch?


Viele Grüße
equin


----------



## XHelp (27. Okt 2010)

Du machst nichts falsch. Der rechnet schon das was er machen soll, nur ist 
	
	
	
	





```
Math.PI/2d
```
 ungefähr ein halben Pi. Also kriegst du ja auch ein ungefähres Ergebnis raus, was so ziemlich 0-ähnlich sein sollte.
Und für die Umrechnung von Grad zu Bogenmaß kannst du auch 
	
	
	
	





```
Math.toRadians
```
 verwenden. Die macht zwar exact das gleiche, aber dein Code ist besser lesbar.


----------



## equin (27. Okt 2010)

Achso ok... also hat man da immer einen gewissen Rundungsfehler drin?


----------



## XHelp (27. Okt 2010)

Sofern du keine *exakte* double-Darstellung von Pi findest - ja


----------



## DerShirkTV (24. Mrz 2017)

XHelp hat gesagt.:


> Sofern du keine *exakte* double-Darstellung von Pi findest - ja


Es wird also genauer, wenn ich Math.PI mit den ersten 10000 Nachkommastellen von Pi ersetzte?


----------



## mrBrown (24. Mrz 2017)

DerShirkTV hat gesagt.:


> Es wird also genauer, wenn ich Math.PI mit den ersten 10000 Nachkommastellen von Pi ersetzte?


Wenn du einen Datentyp nimmst, in den die rein passen, ja.


----------



## DerShirkTV (24. Mrz 2017)

mrBrown hat gesagt.:


> Wenn du einen Datentyp nimmst, in den die rein passen, ja.


Passt das in double noch rein? Mir wurde erklärt double ist unbegrenzt.

DerShirkTV


----------



## mrBrown (24. Mrz 2017)

Math.PI ist das genauste, was double darstellen kann


----------



## MarkLeon (14. Dez 2021)

DerShirkTV hat gesagt.:


> Passt das in double noch rein? Mir wurde erklärt double ist unbegrenzt.
> 
> DerShirkTV


Wer auch immer dir das erklärt hat muss nochmal genauer nachdenken... Selbst wenn es theoretisch einen Datentyp gäbe, der unbegrenzt ist, dann müsste dieser auch unbegrenzt viele stellen Speichern. Wenn man pro Stelle nur ein Atom benötigen würde (Binärdarstellung) bräuchte man bei unendlich stellen also doch mindestens unendlich Atome... Einen unbegrenzten Datentyp kann es also nicht geben.


----------



## MarkLeon (14. Dez 2021)

DerShirkTV hat gesagt.:


> Passt das in double noch rein? Mir wurde erklärt double ist unbegrenzt.
> 
> DerShirkTV


Wer auch immer dir das erklärt hat muss nochmal genauer nachdenken... Selbst wenn es theoretisch einen Datentyp gäbe, der unbegrenzt ist, dann müsste dieser auch unbegrenzt viele stellen Speichern. Wenn man pro Stelle nur ein Atom benötigen würde (Binärdarstellung) bräuchte man bei unendlich stellen also doch mindestens unendlich Atome... Einen unbegrenzten Datentyp kann es also nicht geben.


----------



## Neumi5694 (14. Dez 2021)

Double ist "beinahe" unbegrenzt, was die größste Zahl angeht (ignorieren wir mal Double.POSITIVE_INFINITY). Die Genauigkeit ist aber beschränkt. Double ist nur in sehr wenigen Fällen exakt, aber der genaueste Datentyp für nicht ganze Zahlen, mit dem du es zu tun kriegen wirst.


----------



## LimDul (14. Dez 2021)

DerShirkTV hat gesagt.:


> Passt das in double noch rein? Mir wurde erklärt double ist unbegrenzt.
> 
> DerShirkTV


Nein, Double ist nicht unbegrenzt. Double besteht aus 64 Bit. Das heißt, mit einem Double können 2^64 verschiedene Werte dargestellt werden.(Mit einen Long übrigens ebenso).

Nun existieren bereits zwischen 0 und 1 mehr als 2^64 verschiedene Zahlen - daher ist klar, dass man mit Double nicht alles exakt darstellen kann. Double verwendet - grob gesagt - eine Darstellung der Form x * 10^y. Die 64 Bit werden dabei für die Darstellung von x und verwendet. Dadurch ist es möglich auch sehr große Zahlen darzustellen. Allerdings ist dadurch die Zahl der signifikanten Stellen begrenzt - Sprich, bei sehr großen Zahlen kommen am Ende ziemlich viele Nullen, weil diese Genauigkeit nicht mehr darstellbar ist.


----------

