0Pricing
Java Academy · Lektion

Mit BigDecimal arbeiten

Exakte Dezimalarithmetik

Mit BigDecimal arbeiten ist eine kostenlose Java Academy-Lektion auf CoddyKit. Dies ist Lektion 2 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.

Exakte Dezimalarithmetik

BigDecimal aus dem Paket java.math stellt Dezimalzahlen mit beliebiger Genauigkeit und ohne versteckte Rundungsfehler dar. Es ist das Standardwerkzeug für Finanzberechnungen.

Ein BigDecimal erstellen

Am sichersten erstellen Sie ein BigDecimal aus einer Zeichenkette. Dadurch bleiben die von Ihnen eingegebenen Ziffern exakt erhalten.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal amount = new BigDecimal("42.50");
        System.out.println(amount);
    }
}

Unveränderlichkeit

BigDecimal ist unveränderlich. Operationen wie add ändern das Original nicht, sondern geben ein neues BigDecimal zurück. Sie müssen den Rückgabewert speichern.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal a = new BigDecimal("10");
        a.add(new BigDecimal("5"));
        System.out.println(a);
    }
}

Addition und Subtraktion

Verwenden Sie add und subtract, und denken Sie daran, das Ergebnis zu speichern. Jeder Aufruf gibt einen neuen Wert zurück.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal price = new BigDecimal("19.99");
        BigDecimal tax = new BigDecimal("1.60");
        BigDecimal total = price.add(tax);
        System.out.println(total);
    }
}

Multiplikation

multiply funktioniert wie erwartet. Beachten Sie, dass die Skalierung des Ergebnisses der Summe der Skalierungen der Operanden entspricht.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal unit = new BigDecimal("2.50");
        BigDecimal qty = new BigDecimal("3");
        System.out.println(unit.multiply(qty));
    }
}

Bei Division ist Vorsicht geboten

Die Division von Werten, die sich nicht ohne Rest teilen lassen, wie 1 durch 3, ergibt eine unendliche Dezimalzahl. Ein einfaches divide löst dann eine ArithmeticException aus.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal one = new BigDecimal("1");
        BigDecimal three = new BigDecimal("3");
        try {
            System.out.println(one.divide(three));
        } catch (ArithmeticException e) {
            System.out.println("Need to specify rounding!");
        }
    }
}

Division mit Rundung

Geben Sie eine Skalierung und einen RoundingMode an, um sicher zu dividieren. Hier behalten wir zwei Nachkommastellen bei und runden kaufmännisch auf.

import java.math.BigDecimal;
import java.math.RoundingMode;

public class Main {
    public static void main(String[] args) {
        BigDecimal one = new BigDecimal("1");
        BigDecimal three = new BigDecimal("3");
        System.out.println(one.divide(three, 2, RoundingMode.HALF_UP));
    }
}

Werte vergleichen

Verwenden Sie compareTo, um numerische Werte zu vergleichen. Verwenden Sie nicht equals, da equals die Skalierung berücksichtigt: 2.0 und 2.00 sind mit equals nicht gleich, mit compareTo jedoch schon.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal a = new BigDecimal("2.0");
        BigDecimal b = new BigDecimal("2.00");
        System.out.println(a.equals(b));
        System.out.println(a.compareTo(b) == 0);
    }
}

Praktische Konstanten

BigDecimal bietet fertige Konstanten: BigDecimal.ZERO, BigDecimal.ONE und BigDecimal.TEN. Verwenden Sie diese, statt eigene zu erstellen.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal sum = BigDecimal.ZERO;
        sum = sum.add(BigDecimal.TEN);
        System.out.println(sum);
    }
}

Eine Liste summieren

Ein häufig verwendetes Muster besteht darin, mit BigDecimal.ZERO zu beginnen und in einer Schleife jeden Wert zu addieren, wobei Sie das Ergebnis jedes Mal speichern.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal[] prices = {
            new BigDecimal("1.10"),
            new BigDecimal("2.20"),
            new BigDecimal("3.30")
        };
        BigDecimal total = BigDecimal.ZERO;
        for (BigDecimal p : prices) {
            total = total.add(p);
        }
        System.out.println(total);
    }
}

Bewährte Vorgehensweisen

Behalten Sie die wichtigsten Punkte im Gedächtnis: Erstellen Sie Werte aus Zeichenketten, behandeln Sie sie als unveränderlich, geben Sie bei Divisionen immer eine Rundung an und vergleichen Sie mit compareTo.

Kurzer Test

Testen Sie Ihr Wissen über BigDecimal.

Zusammenfassung

Sie haben gelernt, mit BigDecimal zu arbeiten:

  • Erstellen Sie es aus einer Zeichenkette, damit die Ziffern exakt erhalten bleiben
  • Es ist unveränderlich. Speichern Sie daher das Ergebnis jeder Operation
  • Verwenden Sie add, subtract und multiply direkt
  • divide benötigt für nicht abbrechende Ergebnisse eine Skalierung und einen RoundingMode
  • Vergleichen Sie mit compareTo, nicht mit equals

Häufig gestellte Fragen

Ist die Lektion „Mit BigDecimal arbeiten“ kostenlos?

Ja — der vollständige Text von „Mit BigDecimal arbeiten“ 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 „Mit BigDecimal arbeiten“?

Exakte Dezimalarithmetik 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 2 von 4.

Wie lange dauert die Lektion „Mit BigDecimal arbeiten“?

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