Rundung und Scale
Steuern Sie Präzision und Rundungsmodi
Rundung und Scale ist eine kostenlose Java Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Java Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Java Academy-Kurs umfasst insgesamt 4 Lektionen.
Skalierung und Genauigkeit
Jedes BigDecimal hat eine scale, also die Anzahl der Stellen rechts vom Dezimaltrennzeichen. Der Wert 12.340 hat eine Skalierung von 3. Durch die Steuerung der Skalierung können Sie Geldbeträge mit genau zwei Nachkommastellen darstellen.
Skalierung untersuchen
Rufen Sie scale() auf, um zu sehen, wie viele Nachkommastellen ein Wert enthält, und precision(), um die Gesamtzahl der signifikanten Stellen zu ermitteln.
import java.math.BigDecimal;
public class Main {
public static void main(String[] args) {
BigDecimal v = new BigDecimal("12.340");
System.out.println(v.scale());
System.out.println(v.precision());
}
}Mit setScale Nachkommastellen festlegen
setScale zwingt einen Wert auf eine festgelegte Anzahl von Nachkommastellen. Sie müssen einen RoundingMode übergeben, wenn eine Rundung erforderlich ist.
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Main {
public static void main(String[] args) {
BigDecimal v = new BigDecimal("12.3456");
System.out.println(v.setScale(2, RoundingMode.HALF_UP));
}
}HALF_UP, der häufigste Modus
RoundingMode.HALF_UP rundet auf den nächstgelegenen Wert; bei Gleichstand wird von null weg gerundet. Das ist die übliche kaufmännische Rundung, die man in der Schule lernt.
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Main {
public static void main(String[] args) {
System.out.println(new BigDecimal("2.5").setScale(0, RoundingMode.HALF_UP));
System.out.println(new BigDecimal("3.5").setScale(0, RoundingMode.HALF_UP));
}
}HALF_EVEN, Bankrundung
HALF_EVEN rundet bei Gleichstand zur nächstgelegenen geraden Ziffer. Dadurch werden Verzerrungen über viele Rundungen hinweg verringert, weshalb Banken diesen Modus bevorzugen.
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Main {
public static void main(String[] args) {
System.out.println(new BigDecimal("2.5").setScale(0, RoundingMode.HALF_EVEN));
System.out.println(new BigDecimal("3.5").setScale(0, RoundingMode.HALF_EVEN));
}
}CEILING und FLOOR
CEILING rundet immer in Richtung der positiven Unendlichkeit und FLOOR immer in Richtung der negativen Unendlichkeit, unabhängig von der verworfenen Ziffer.
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Main {
public static void main(String[] args) {
BigDecimal v = new BigDecimal("2.1");
System.out.println(v.setScale(0, RoundingMode.CEILING));
System.out.println(v.setScale(0, RoundingMode.FLOOR));
}
}DOWN und UP
DOWN schneidet in Richtung null ab, während UP immer von null weg rundet. DOWN entspricht einem einfachen Abschneiden.
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Main {
public static void main(String[] args) {
BigDecimal v = new BigDecimal("2.9");
System.out.println(v.setScale(0, RoundingMode.DOWN));
System.out.println(v.setScale(0, RoundingMode.UP));
}
}Rundung während der Division
Eine Division kann unendlich viele Nachkommastellen ergeben. Deshalb geben Sie die Skalierung und den Rundungsmodus direkt beim Aufruf von divide an.
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Main {
public static void main(String[] args) {
BigDecimal bill = new BigDecimal("100.00");
BigDecimal people = new BigDecimal("3");
System.out.println(bill.divide(people, 2, RoundingMode.HALF_UP));
}
}Nachgestellte Nullen entfernen
stripTrailingZeros entfernt überflüssige Nullen. Kombinieren Sie die Methode mit toPlainString, um wissenschaftliche Schreibweise in der Ausgabe zu vermeiden.
import java.math.BigDecimal;
public class Main {
public static void main(String[] args) {
BigDecimal v = new BigDecimal("12.300");
System.out.println(v.stripTrailingZeros().toPlainString());
}
}Geldbeträge formatieren
Legen Sie für die Anzeige die Skalierung mit HALF_UP auf 2 fest, damit Preise immer zwei Nachkommastellen anzeigen, auch bei ganzen Beträgen.
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Main {
public static void main(String[] args) {
BigDecimal amount = new BigDecimal("7");
System.out.println(amount.setScale(2, RoundingMode.HALF_UP));
}
}Einen Modus auswählen
Wählen Sie HALF_UP für gewöhnliche, benutzerseitige Rundungen und HALF_EVEN für die Buchhaltung, um kumulative Verzerrungen zu verringern. Geben Sie immer einen Modus an, damit Ihr Code bei nicht abbrechenden Ergebnissen keine Ausnahme auslöst.
Kurzer Test
Testen Sie Ihr Wissen über Skalierung und Rundung.
Zusammenfassung
Sie haben gelernt, die Genauigkeit zu steuern:
- Die Skalierung gibt die Anzahl der Stellen nach dem Dezimaltrennzeichen an
setScalelegt die Nachkommastellen fest und benötigt einenRoundingModeHALF_UPist die übliche Rundung,HALF_EVENdie BankrundungCEILING,FLOOR,UPundDOWNdecken gerichtete Rundungen ab- Geben Sie bei Divisionen immer einen Modus an, um Ausnahmen zu vermeiden
Häufig gestellte Fragen
Ist die Lektion „Rundung und Scale“ kostenlos?
Ja — der vollständige Text von „Rundung und Scale“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Java Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Java Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Rundung und Scale“?
Steuern Sie Präzision und Rundungsmodi Du übst Java Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Java Academy zu starten?
Keine Vorkenntnisse erforderlich. Java Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Rundung und Scale“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Java Academy-Lektion Code schreiben und ausführen?
Ja. Jede Java Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Warum nicht double für Geldbeträge?
- Mit BigDecimal arbeiten
- Rundung und Scale
- BigInteger für riesige Zahlen