Einführung
Das Runden einer Zahl bedeutet, einen ungefähren Wert von ihr zu erhalten. In Java gibt es mehrere Möglichkeiten, eine Gleitkommazahl zu runden. In diesem Lab (Übungsumgebung) werden wir lernen, wie man Zahlen mit verschiedenen Methoden in Java rundet.
Runden mit der printf()-Methode
Wir können die System.out.printf()-Methode verwenden, um die gerundete Zahl auf der Konsole auszugeben. Wir können die Anzahl der Dezimalstellen, auf die wir runden möchten, mithilfe von Präzisionsmodifikatoren angeben.
public static void main(String args[]) {
double pi = 3.14159265359;
double
float g = 9.807f;
System.out.printf("Pi: %.2f %n", pi); // prints Pi: 3.14
System.out.printf("One Third: %.3f %n", oneThird); // prints One Third: 0.333
System.out.printf("Gravitation Acceleration(g): %.0f", g); // prints Gravitation Acceleration(g): 10
}
Um den Code auszuführen, öffnen Sie das Terminal und wechseln Sie in das Verzeichnis, in dem sich die Code-Datei befindet. Kompilieren Sie dann den Code mit javac filename.java. Führen Sie ihn anschließend mit java filename aus.
Runden mit der DecimalFormat()-Methode
Wir können die DecimalFormat-Klasse verwenden, um ein Muster anzugeben, in dem wir die Zahl formatieren möchten. Wir können Rautezeichen (#) verwenden, um die Anzahl der Dezimalstellen anzugeben, und dann die format()-Methode verwenden, um die Ziffern zu runden.
public static void main(String args[]) {
double pi = 3.14159265359;
double
float g = 9.807f;
DecimalFormat d1 = new DecimalFormat("#.##");
DecimalFormat d2 = new DecimalFormat("#.###");
DecimalFormat d3 = new DecimalFormat("#");
System.out.println("Pi: " + d1.format(pi)); // prints Pi: 3.14
System.out.println("One Third: " + d2.format(oneThird)); // prints One Third: 0.333
System.out.println("Gravitation Acceleration(g):" + d3.format(g)); // prints Gravitation Acceleration(g): 10
}
Um den Code auszuführen, öffnen Sie das Terminal und wechseln Sie in das Verzeichnis, in dem sich die Code-Datei befindet. Kompilieren Sie dann den Code mit javac filename.java. Führen Sie ihn anschließend mit java filename aus.
Runden mit der Math.round()-Methode
Wir können Math.round() verwenden, um Dezimalzahlen zu runden. Diese Methode kann verwendet werden, wenn wir eine Zahl auf null Dezimalstellen runden möchten.
public static void main(String args[]) {
double pi = 3.14159265359;
double
float g = 9.807f;
System.out.println("Pi: " + Math.round(pi)); // prints Pi: 3
System.out.println("One Third: " + Math.round(oneThird)); // prints One Third: 0
System.out.println("Gravitation Acceleration(g):" + Math.round(g)); // prints Gravitation Acceleration(g): 10
}
Um den Code auszuführen, öffnen Sie das Terminal und wechseln Sie in das Verzeichnis, in dem sich die Code-Datei befindet. Kompilieren Sie dann den Code mit javac filename.java. Führen Sie ihn anschließend mit java filename aus.
Erstellen einer benutzerdefinierten Rundungsmethode
Wir können unsere eigene Methode erstellen, um eine Dezimalzahl zu runden, wenn wir auf mehr als null Dezimalstellen runden möchten. Die folgende Methode nimmt einen Dezimalwert und die Anzahl der Dezimalstellen, auf die gerundet werden soll, als Parameter und gibt die gerundete Zahl zurück.
public static double round(double num, int places) {
double scale = Math.pow(10, places);
double roundedNum = Math.round(num * scale) / scale;
return roundedNum;
}
public static void main(String args[]) {
double pi = 3.14159265359;
double
float g = 9.807f;
System.out.println("Pi: " + round(pi, 2)); // prints Pi: 3.14
System.out.println("One Third: " + round(oneThird, 3)); // prints One Third: 0.333
System.out.println("Gravitation Acceleration(g):" + round(g, 0)); // prints Gravitation Acceleration(g): 10.0
}
Um den Code auszuführen, öffnen Sie das Terminal und wechseln Sie in das Verzeichnis, in dem sich die Code-Datei befindet. Kompilieren Sie dann den Code mit javac filename.java. Führen Sie ihn anschließend mit java filename aus.
Runden mit BigDecimal
Wir können die round()-Methode der BigDecimal-Klasse verwenden, um eine Zahl zu runden. Der folgende Code zeigt, wie man eine Dezimalzahl mit der round()-Methode der BigDecimal-Klasse rundet.
public static void main(String args[]) {
BigDecimal pi = new BigDecimal("3.14159265359");
pi = pi.setScale(4, RoundingMode.HALF_UP); // Rounds to 4 decimal places
System.out.println("Pi: " + pi); // prints Pi: 3.1416
}
Um den Code auszuführen, öffnen Sie das Terminal und wechseln Sie in das Verzeichnis, in dem sich die Code-Datei befindet. Kompilieren Sie dann den Code mit javac filename.java. Führen Sie ihn anschließend mit java filename aus.
Runden beliebiger Nicht-BigDecimal-Zahlen mit BigDecimal
Wenn die Zahl nicht vom Typ BigDecimal ist, können wir sie zuerst konvertieren und dann mit der BigDecimal-Klasse runden. Die folgende Methode kann verwendet werden, um Zahlen vom double-Datentyp zu runden.
public static double round(double num, int places) {
BigDecimal b = new BigDecimal(Double.toString(num));
b = b.setScale(places, RoundingMode.HALF_UP);
return b.doubleValue();
}
public static void main(String args[]) {
double pi = 3.14159265359;
double
double g = 9.807f;
pi = round(pi, 4); 3);
g = round(g, 0);
System.out.println("Pi: " +pi); // prints Pi: 3.1416
System.out.println("One Third: " + oneThird); // prints One Third: 0.333
System.out.println("Gravitation Acceleration(g):" + g); // prints Gravitation Acceleration(g): 10.0
}
Um den Code auszuführen, öffnen Sie das Terminal und wechseln Sie in das Verzeichnis, in dem sich die Code-Datei befindet. Kompilieren Sie dann den Code mit javac filename.java. Führen Sie ihn anschließend mit java filename aus.
Zusammenfassung
In diesem Lab haben wir verschiedene Methoden kennengelernt, um Dezimalzahlen in Java zu runden. Wir haben printf() und DecimalFormat() für einfachere Rundungen verwendet, Math.round() für das Runden auf null Dezimalstellen, BigDecimal für präzise Rundungen und DoubleRounder für das Runden mit der decimal4j-Bibliothek. Wir haben auch eine benutzerdefinierte Methode erstellt, um jede Dezimalzahl auf eine beliebige Anzahl von Dezimalstellen zu runden.



