# Double nach Integer casten



## roddy (18. Okt 2005)

Hallo zusammen, 

ich habe (mal wieder) das Problem, aus einem Double einen Integer machen zu wollen. 

int MeinInteger = MeinDouble.intValue();

funktioniert nicht, mit der Begründung "double cannot be dereferenced"...

Ich hatte das Problem schon irgendwann, mir will aber einfach nicht mehr einfallen, wie ich das damals gelöst hatte. Hat jemand auf die schnelle einen Tipp, wie ich aus einem Double einen Integer mache?

Danke schonmal im Voraus!


----------



## roddy (18. Okt 2005)

Ich hab die Antwort gefunden, habe es wohl zu kompliziert versucht ;-)

Es funktioniert:

MeinInteger = (int)MeinDouble;


----------



## Henrik (18. Okt 2005)

Vielleicht: 
int i = (int)  d;

EDIT: mmh zu langsam


----------



## The_S (18. Okt 2005)

Mit der Methode rundest du aber nicht, so schneidest du die letzte Stelle nur ab. Weiß net ob das für dich wichtig ist!? Ansonsten einfach die letzte Zahl hinter dem Komma anschauen, > 4 zahl++ ansonsten einfach so casten.


----------



## Gast (18. Okt 2005)

Danke für den Hinweis. Bei mir gehts allerdings eh um Zahlen ohne Nachkommastellen.


----------



## Sky (19. Okt 2005)

Hobbit_Im_Blutrausch hat gesagt.:
			
		

> Mit der Methode rundest du aber nicht, so schneidest du die letzte Stelle nur ab. Weiß net ob das für dich wichtig ist!? Ansonsten einfach die letzte Zahl hinter dem Komma anschauen, > 4 zahl++ ansonsten einfach so casten.


Wie schaut man denn auf die Zahl hinter dem Komma?? Umwandlung in String? oder doubleZahl - (int)doubleZahl und gucken ob man größer oder kleiner 0.5 ist !?

Ich schlage vor, einfach in den von Dir angeprochenen Fällen die Methode *Math#round* zu verwenden.


----------



## The_S (19. Okt 2005)

Joa, Math.round() is auch ne Möglichkeit. Ich persönlich mach das immer mit DecimalFormat (dann hastes gleich supi für die Ausgabe formatiert, solangs natürlich später auch wieder ausgegeben werden soll)


----------



## Sky (19. Okt 2005)

Hobbit_Im_Blutrausch hat gesagt.:
			
		

> Joa, Math.round() is auch ne Möglichkeit. Ich persönlich mach das immer mit DecimalFormat (dann hastes gleich supi für die Ausgabe formatiert, solangs natürlich später auch wieder ausgegeben werden soll)


Also, nun hast Du aber über 2 gänzlich verschiedene Dinge gesprochen... 
a) Eine Zahl runden == Math#round
b) Eine Zahl formatiert ausgeben == NumberFormat (DecimalFormat)
Der Unterschied liegt darin, dass bei a) die Zahl geändert wird und bei b) die Zahl die gleiche bleibt; es erfolgt nur eine Formatierung in einen String für die Ausgabe


----------



## The_S (22. Okt 2005)

War ja auch nur auf mich bezogen, das mit dem DecimalFormat und nicht speziell auf diesen Fall hier. Hät ja sein können, dass er ähnliches vorhat    :wink:


----------

