0Pricing
Java Academy · Lektion

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
  • setScale legt die Nachkommastellen fest und benötigt einen RoundingMode
  • HALF_UP ist die übliche Rundung, HALF_EVEN die Bankrundung
  • CEILING, FLOOR, UP und DOWN decken 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

  1. Warum nicht double für Geldbeträge?
  2. Mit BigDecimal arbeiten
  3. Rundung und Scale
  4. BigInteger für riesige Zahlen
← Zurück zu Java Academy