Mit der Java-Klasse Big­De­ci­mal lassen sich komplexe Fließ­kom­ma­zah­len exakt ver­ar­bei­ten. Nachdem diese erstellt wurden, können sie über ver­schie­de­ne Methoden genutzt werden. Die Syntax bleibt dabei stets logisch aufgebaut, sodass auch Ein­stei­ger:innen nach einer kurzen Ein­ge­wöh­nungs­pha­se pro­blem­los mit der Klasse arbeiten können.

Was ist Java Big­De­ci­mal?

Hinter Java Big­De­ci­mal steckt eine Klasse, mit der du komplexe Gleit­kom­ma­zah­len in theo­re­tisch un­be­grenz­ter Größe präzise dar­stel­len und berechnen kannst. Über diverse Methoden, die wir dir hier vor­stel­len, führst du Ope­ra­tio­nen in den Bereichen Arith­me­tik, Abrundung, For­mat­kon­ver­tie­rung, Hashing sowie de­tail­lier­te Ver­glei­che mit höchster Ge­nau­ig­keit durch.

Java Big­De­ci­mal setzt sich aus einer 32-Bit-Integer-Skala und einem un­ska­lier­ten („unscale“) Integer-Wert mit variabler Präzision zusammen. Der Begriff „Scale“ definiert dabei die Anzahl der Nach­kom­ma­stel­len (sofern ≥ 0). Bei einem Wert kleiner als Null erfolgt eine Mul­ti­pli­ka­ti­on mit „10^(-scale)“. Die Kapazität der Klasse wird lediglich durch den ver­füg­ba­ren Ar­beits­spei­cher begrenzt – ein Limit, das in der Praxis kaum erreicht wird. Während Big­De­ci­mal speziell für Gleit­kom­ma­zah­len kon­zi­piert ist, nutzt du für Ganz­zah­len die Klasse Big­In­te­ger.

Wofür wird die Klasse benötigt?

Aufgrund der hohen Präzision ist Java Big­De­ci­mal nicht für jedes Projekt er­for­der­lich. Es gibt jedoch Bereiche, in denen die Klasse un­ver­zicht­bar ist. Überall dort, wo bereits kleinste Ab­wei­chun­gen große Folgen haben, ist sie der Standard – etwa im E-Commerce bei Fi­nanz­trans­ak­tio­nen. Auch für Statik-Analysen, in der Me­di­zin­tech­nik oder bei der Steuerung von Luft- und Raum­fahr­zeu­gen vertraut man auf Java Big­De­ci­mal. In vielen anderen Soft­ware­pro­jek­ten sorgt die genaue Be­rech­nung schlicht für maximale Si­cher­heit.

Wie wird ein Objekt erstellt?

Um Big­De­ci­mal zu nutzen, musst du die Klasse zuerst in dein Programm im­por­tie­ren. Danach kannst du ein Objekt de­kla­rie­ren, den ge­wünsch­ten Wert als Argument de­fi­nie­ren und diesen an den Java-Kon­struk­tor übergeben. Sobald das erledigt ist, stehen dir die Big­De­ci­mals für Be­rech­nun­gen zur Verfügung. Im Folgenden zeigen wir dir, wie du die Klasse im­por­tierst und zwei Beispiel-Objekte anlegst:

/ / Ihr Java-Programm für die BigDecimal-Klasse
import java.math.BigDecimal;
public class BigDecimalBeispiel
{
	public static void main(String[] args)
	{
		/ / Zwei neue BigDecimals erstellen
		BigDecimal BeispielEins =
			new BigDecimal ("1275936001.744297361");
		BigDecimals BeispielZwei =
			new BigDecimal ("4746691047.132719503");
	}
}
java

Diese Objekte kannst du nun mit den passenden Methoden wei­ter­ver­ar­bei­ten.

Beispiele für Java Big­De­ci­mal

Sobald deine Objekte be­reit­ste­hen, nutzt du Methoden für ver­schie­de­ne Ope­ra­tio­nen. Wir zeigen dir anhand einfacher Beispiele, wie du Er­geb­nis­se erzielst. Die Ausgabe startest du mit dem Java-Befehl System.out.println().

Zwei Big­De­ci­mals addieren

Für die Addition von zwei Big­De­ci­mals nutzt du die Methode add(). Du gibst einfach die Werte an, die zu­sam­men­ge­rech­net werden sollen. Hier addieren wir „Bei­spiel­Eins“ und „Bei­spiel­Z­wei“:

BeispielEins =
BeispielEins.add(BeispielZwei);
System.out.println ("Das gesuchte Ergebnis nach der Addition lautet: " + BeispielEins);
java

Zahlen sub­tra­hie­ren

Um Werte von­ein­an­der ab­zu­zie­hen, ver­wen­dest du subtract(). In diesem Beispiel ziehen wir „Bei­spiel­Z­wei“ von „Bei­spiel­Eins“ ab:

BeispielEins =
BeispielEins.subtract(BeispielZwei);
System.out.println ("Das gesuchte Ergebnis nach der Subtraktion lautet: " + BeispielEins);
java

Werte mul­ti­pli­zie­ren

Die Mul­ti­pli­ka­ti­on funk­tio­niert nach dem gleichen Prinzip über die Methode multiply(), wobei das Objekt „mul­ti­pli­er“ als Argument dient. Der Code für das Produkt aus „Bei­spiel­Z­wei“ und „Bei­spiel­Eins“ sieht so aus:

BeispielEins =
BeispielEins.multiply(BeispielZwei);
System.out.println ("Das gesuchte Ergebnis nach der Multiplikation lautet: " + BeispielEins);
java

Zahlen di­vi­die­ren

Bei der Division greifst du auf divide() zurück. Die Syntax bleibt gewohnt einfach:

BeispielEins =
BeispielEins.divide(BeispielZwei);
System.out.println ("Das gesuchte Ergebnis nach der Division lautet: " + BeispielEins);
java

Beachte jedoch: Das klappt nur rei­bungs­los, wenn das Ergebnis exakt oder eine ganze Zahl ist. An­dern­falls erscheint die Feh­ler­mel­dung java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. (Lauf­zeit­feh­ler). Um dies zu ver­hin­dern, bietet die divide-Methode ver­schie­de­ne Run­dungs­op­tio­nen via java.math.Roun­ding­Mo­de:

Konstante Funktion
CEILING Rundet in Richtung positiv unendlich.
DOWN Rundet in Richtung Null ab.
FLOOR Rundet in Richtung negativ unendlich.
HALF_DOWN Rundet zum nächsten Nachbarn; bei gleichem Abstand weg von der Null.
HALF_EVEN Rundet zum nächsten Nachbarn; bei gleichem Abstand zur nächsten geraden Zahl.
HALF_UP Rundet zum nächsten Nachbarn; bei gleichem Abstand in Richtung Null.
UN­NECES­SA­RY Erlaubt nur exakte Be­rech­nun­gen ohne Rundung. Führt bei nicht-exakten Werten zum Fehler.
UP Rundet von der Null weg auf.

Überblick der wich­tigs­ten Methoden

Zum Abschluss findest du hier eine Zu­sam­men­fas­sung der zentralen Methoden für die Arbeit mit Big­De­ci­mals in Java.

Methode Funktion
abs() Liefert den absoluten Betrag des Big­De­ci­mals.
add() Berechnet die Summe aus dem aktuellen Wert und dem Addend.
divide() Berechnet den Quo­ti­en­ten (Wert / Divisor).
max(Big­De­ci­mal val) Ermittelt den Ma­xi­mal­wert des Big­De­ci­mals.
min(Big­De­ci­mal val) Ermittelt den Mi­ni­mal­wert des Big­De­ci­mals.
mo­ve­Point­Left(int n) Ver­schiebt das Komma um n Stellen nach links.
mo­ve­Po­in­tRight(int n) Ver­schiebt das Komma um n Stellen nach rechts.
multiply(Big­De­ci­mal mul­ti­pli­cand, Math­Con­text mc) Berechnet das Produkt (Wert * Mul­ti­pli­kant).
Zum Hauptmenü