Wie rundet man eine Gleitkommazahl auf eine ganze Zahl / auf eine bestimmte Anzahl von Kommastellen?

Soll das Ergebnis der Rundung eine Zeichenkette sein, kann man String.format() benützen:

String s = String.format("%.3f", 1.2345678);  // s = 1.235

Benötigt man den gerundeten Wert nur für die Konsolenausgabe, kann die Methode printf() verwendet werden:

System.out.printf("%.3f\n", 1.2345678);  // gibt 1.235 aus

Der String “%.3f” ist ein sogenannter Format-String. Mit dem Zeichen ‘%’ wird die Beschreibung einer Leerstelle eingeleitet. Mit dem Zeichen ‘f’ wird der Datentyp der Leerstelle spezifiziert. Im konkreten Anwendungsfall ist die Leerstelle also mit einem double-Wert zu sättigen. Mit ‘.3’ wird die Formatierung mit 3 gerundeten Nachkommastellen festgelegt.

Benötigt man die gerundete Gleitkommazahl für weitere Berechnungen, kann man folgendermaßen vorgehen:

double x = 1.2345678;
double a = Math.round(x * 1000.0) / 1000.0; // a = 1.235

Beachte: Math.round() liefert für double-Argumente ein Ergebnis vom Typ long zurück. Mit dem Typ long kann man nicht den gesamten Wertebereich des Typs double abbilden.
Long: -9223372036854775808 bis 9223372036854775807 (-263 bis 263-1)
Double: -1,7E+308 bis +1,7E+308
Ist das Argument von round() größer als die größte long-Zahl, ist das Ergebnis die größte long-Zahl.

de German
X