Wie kann ich in Java auf die nächste Zahl aufrunden?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Kommt etwas darauf an, was bei negativen Zahlen geschehen soll.

Für positive Zahlen ist das Folgende wohl am schnellsten:

double ausgangszahl ;
int gerundeteZahl;
ausgangszahl = komplizierteRechnung(...) ;
gerundeteZahl = (int) (ausgangszahl + 0.5);

Bei negativen Zahlen will man aber oft nicht auf die nächst höhere Zahl runden, sondern manchmal auch auf die nächst kleinere. Obige Formel ergäbe für -3.7 die ganze Zahl -3. Hingegen wird -3.1 nun auf -2 aufgerundet!

-3.7 z. B. soll wie erwähnt oft auf -4 gerundet werden. Die folgende Formel verhält sich bei positiven Zahle exakt wie die obige Formel, doch negative Zahlen werden auch abgerundet.

gerundeteZahl = (int) (ausgangszahl + (ausgangszahl > 0 ? 0.5 : -0.5));


MoinMoin2014 
Fragesteller
 08.08.2015, 15:56

Danke,  hab gerade vor ein paar Minuten den Durchbruch mit etwas ähnlichem errungen :D

Ich gluabe, mir wäre momentan am meisten geholfen, wenn man mir sagen könnte, wie man ".0" wegkriegt :/

0

PerfectMuffin  07.08.2015, 22:01

Abgesehen davon kriegt jedes Kleinkind eine Rundung hin. Lass einfach den Rechner das machen, was du machen würdest.

1
MoinMoin2014 
Fragesteller
 07.08.2015, 22:06
@PerfectMuffin

Dankeschön, sowas habe ich gesucht :)
Werde mich mal durcharbeiten und schauen, wie weit mich das bringt!

0
PerfectMuffin  07.08.2015, 22:17
@MoinMoin2014

Wenn du die Apidocs lesen und selbstständig durchsuchen kannst, bist du besser im Programmieren, als 95% der ganzen Bukkit-Kiddos.

0
MoinMoin2014 
Fragesteller
 07.08.2015, 22:42
@PerfectMuffin

Ich beneide dich einfach mal anstandshalber um diese Erfahrung :) (nicht böse gemeint)

Danke dennoch, schön, dass es hier so viele helfende Hände gibt ;)

0
MoinMoin2014 
Fragesteller
 08.08.2015, 16:05
@PerfectMuffin

Öhm... Warum tritt bei int folgender Fehler auf: ich hab als Eingabezahl 490 und es soll als int durch den Wert 3,07 gerechnet werden... Es kommt 159,6091205212 raus, aber angezeigt wird nur 159.0, wieso das? Klar, Ganzzahl und so, wie muss ich nun vorgehen, um den Wert in diesem Fall aufzurunden?

0