Java Double in int umwandeln?
Hallo, ich muss in Java ein Programm schreiben bei dem aus einem double Wert eine Zahl ohne Nachkommastellen ausgegeben wird - allerdings nur unter einer Bedingung, ansonsten soll ein double Wert ausgegeben werden. Das Problem ist, dass ich es nur hinbekomme, dass der Wert mit x,0 ausgeben wird, anstatt wie gewünscht nur x.
Ich habe alles in eine double Methode geschrieben und dann double d=(int)d; um den double in int umzuwandeln..
Ich hoffe mein Problem ist verständlich und nicht zu wirr formuliert :D
LG
5 Antworten
Du sollst vermutlich ein sogenanntes Typecasting machen, wenn die Bedingung erfüllt ist. Das macht man beispielsweise so:
double meinDouble = 2.0;
int meinInt = (int) meinDouble;
Eine ganze Zahl, sprich dein Integer, hat keine Nachkommastellen und wird entsprechend ohne ausgegeben.
Alternativ kannst du die Ausgabe auch formatieren, statt die Zahl direkt auszugeben, was allerdings wesentlich schwerer zu erarbeiten ist. Das macht man mit String.Format. Schau dir dafür beispielsweise How to nicely format floating numbers to String without unnecessary decimal 0? auf Stackoverflow an.
Runden auf Integer:
Code:
Math.round(doubleZahl);
Runden auf zwei Nachkommastellen:
Code:
double zahl = 2.000778;
double rund = 0;
rund = Math.round(zahl*100)/100;
ändere
double d=(int)d;
zu
int i=(int)d;
Also eigentlich sollte, wenn der Nachkommawert 0 ist, die Ausgabe automatisch als int erfolgen.
Sprich: eigentlich sollte 2.0 automatisch als 2 und 2.01 auch als 2.01 ausgegeben werden.
Ansonsten kannst Du mit Math.floor(x) != x prüfen, ob nach Abschneiden der Nachkommastellen sich die Zahl ändert. Dann könntest Du die Nachkommastellen mit int y = (int)x; abschneiden.
Wie gibst du es denn aus? Vermutlich musst du in deiner Ausgabe einfach %d statt %f schreiben, also die Formatierung ändern.
Wenn du noch runden musst, siehe andere Antwort.