Mit der Java-Klasse Big­De­ci­mal ist es möglich, komplexe Fließ­kom­ma­zah­len präzise zu ver­ar­bei­ten. Diese müssen dafür zunächst erstellt werden und lassen sich dann durch ver­schie­de­ne Methoden nutzen. Die Syntax ist dabei immer ähnlich aufgebaut, sodass die Nutzung der Klasse nach kurzer Ein­ar­bei­tung auf für Ein­stei­ge­rin­nen und Ein­stei­ger möglich ist.

Was ist Java Big­De­ci­mal?

Bei Java Big­De­ci­mal handelt es sich um eine Klasse, die es Ihnen erlaubt, komplexe Gleit­kom­ma­zah­len von theo­re­tisch be­lie­bi­ger Größe sehr exakt dar­zu­stel­len und zu ver­ar­bei­ten. Durch un­ter­schied­li­che Methoden, die wir Ihnen in diesem Artikel vor­stel­len, können Sie mit dieser Klasse Ope­ra­tio­nen im Bereich der Abrundung, Arith­me­tik, For­mat­kon­ver­tie­rung, Hashing und gehobenen Ver­glei­chen mit al­ler­höchs­ter Präzision durch­füh­ren.

Java Big­De­ci­mal besteht aus einer 32-Bit-Integer-Skala und einem un­ska­lier­ten (engl. „unscale“) Integer-Wert mit be­lie­bi­ger Ge­nau­ig­keit. „Scale“ meint in diesem Fall die Anzahl der Ziffern hinter dem De­zi­mal­punkt, sofern dieser größer als oder gleich Null sind. Ist der Wert hingegen kleiner als Null, so wird er mit „10^(-scale)“ mul­ti­pli­ziert. Die mögliche Größe der Klasse wird lediglich vom Speicher des Computers limitiert. Dies ist al­ler­dings eher eine theo­re­ti­sche Über­le­gung, da es un­wahr­schein­lich ist, dass ein Programm eine Zahl erstellt, die den ver­füg­ba­ren Speicher über­steigt. Während Big­De­ci­mal in Java aus­schließ­lich für Gleit­kom­ma­zah­len gedacht ist, werden ganze Zahlen mit der Klasse Big­In­te­ger ver­ar­bei­tet.

Web­hos­ting
Das beste Web­hos­ting zum Spit­zen­preis
  • 3x schneller und 60 % günstiger
  • Maximale Ver­füg­bar­keit mit > 99.99 %
  • Nur bei IONOS: Bis zu 500 GB Spei­cher­platz inklusive

Wofür wird die Klasse benötigt?

Durch seine Ge­nau­ig­keit ist Java Big­De­ci­mal zwar nicht für jeden An­wen­dungs­zweck notwendig, es gibt al­ler­dings Si­tua­tio­nen und Ein­satz­fel­der, in denen die Klasse sehr wertvolle Dienste leistet. Be­rech­nun­gen, bei denen auch die kleinste De­zi­mal­stel­le eine große Aus­wir­kung haben kann, werden zum Beispiel im Bereich E-Commerce für Trans­ak­tio­nen an­ge­stellt. Auch bei genauen Statik-Analysen kommt die Klasse zum Einsatz. Dazu setzen zahl­rei­che Programme, die zum Beispiel bei der Steuerung und Na­vi­ga­ti­on von Flug­zeu­gen oder Raketen zum Einsatz kommen, auf die Klasse und auch im me­di­zi­ni­schen Segment greift man auf Java Big­De­ci­mal zurück. In anderen Feldern gibt die genaue Be­rech­nung zumindest die größt­mög­li­che Si­cher­heit.

Wie wird ein Objekt erstellt?

Wenn Sie Big­De­ci­mal in Java verwenden möchten, müssen Sie zunächst die Klasse in das Java-Programm im­por­tie­ren. Ist dies geschafft, können Sie im Anschluss ein Objekt dieser Klasse de­kla­rie­ren, dann den ge­wünsch­ten Wert als Argument anlegen und dieses an den passenden Java-Kon­struk­tor übergeben. Wenn Sie diesen Vorgang durch­ge­führt haben, können Sie die an­ge­leg­ten Big­De­ci­mals in Java verwenden. Dafür stehen Ihnen innerhalb der Klasse ver­schie­de­ne Methoden zur Verfügung, deren Ver­wen­dung wir Ihnen in den nächsten Ab­schnit­ten näher erklären. So im­por­tie­ren Sie zunächst die Klasse und de­kla­rie­ren zwei bei­spiel­haf­te Objekte:

/ / 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

Nun können Sie diese Objekte mit den ent­spre­chen­den Methoden der Klasse verwenden.

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

Nachdem Sie die Objekte angelegt haben, nutzen Sie un­ter­schied­li­che Methoden, um Ope­ra­tio­nen durch­zu­füh­ren und die Objekte so zu verwenden. Wir zeigen Ihnen anhand einiger einfacher Beispiele, wie das funk­tio­niert und welche Er­geb­nis­se Sie so erzielen können. Die Ausgabe wird über den Java-Befehl System.out.println() initiiert.

Zwei Big­De­ci­mals addieren

Wenn Sie zwei Big­De­ci­mals in Java addieren möchten, ist dies mit der Methode add() möglich. Dafür hin­ter­le­gen Sie die zwei Werte, von denen Sie die Summe errechnen möchten. In unserem Beispiel soll der Wert „Bei­spiel­Eins“ zu dem Wert „Bei­spiel­Z­wei“ addiert werden. Das sieht fol­gen­der­ma­ßen aus:

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

Zahlen sub­tra­hie­ren

Um zwei Werte von­ein­an­der ab­zu­zie­hen, benötigen Sie die Methode subtract(). In unserem nächsten Beispiel sub­tra­hie­ren wir „Bei­spiel­Z­wei“ von „Bei­spiel­Eins“. Der Code dazu sieht so aus:

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

Werte mul­ti­pli­zie­ren

Die Methode, mit der Sie zwei Big­De­ci­mals in Java mul­ti­pli­zie­ren, funk­tio­niert sehr ähnlich. Sie lautet multiply() und nutzt das Objekt „mul­ti­pli­er“ als Argument. Wenn Sie „Bei­spiel­Z­wei“ mit „Bei­spiel­Eins“ mul­ti­pli­zie­ren möchten, sieht der dazu passende Code so aus:

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

Zahlen di­vi­die­ren

Wenn Sie zwei Big­De­ci­mals in Java di­vi­die­ren möchten, ist die Methode divide() die richtige Wahl. Grund­sätz­lich folgt diese ebenfalls der bekannten Syntax und sieht aus wie folgt:

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

Dies funk­tio­niert al­ler­dings nur, wenn das Ergebnis exakt oder eine Ganzzahl ist. Ist dies nicht der Fall, wird eine folgende Feh­ler­mel­dung aus­ge­ge­ben: java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.. Diese be­schreibt einen Lauf­zeit­feh­ler. Um diesen zu vermeiden, gibt es für die Methode divide() ver­schie­de­ne Run­dungs­op­tio­nen, die über java.math.Roun­ding­Mo­de über­mit­telt werden können. Dabei haben Sie die Wahl aus den folgenden Kon­stan­ten:

Konstante Funktion
CEILING Rundet nach positiv unendlich.
DOWN Rundet nach 0.
FLOOR Rundet nach negativ unendlich.
HALF_DOWN Rundet zur nächsten be­nach­bar­ten Zahl und end­ge­gen­ge­setzt von der 0, sofern beide gleich weit entfernt sind.
HALF_EVEN Rundet zur nächsten be­nach­bar­ten Zahl und zur nächsten geraden Zahl, sofern beide gleich weit entfernt sind.
HALF_UP Rundet zur nächsten be­nach­bar­ten Zahl und in Richtung 0, sofern beide gleich weit entfernt sind.
UN­NECES­SA­RY Ver­zich­tet auf eine Rundung und führt aus­schließ­lich exakte Ope­ra­tio­nen durch. Diese Konstante kann nur verwendet werden, wenn die Division exakt ist.
UP Rundet weg von der 0.

Ein Überblick über die wich­tigs­ten Methoden

Nachdem Sie nun gelernt haben, wie Sie Big­De­ci­mals in Java verwenden und Methoden dafür nutzen, stellen wir Ihnen ab­schlie­ßend einige der wich­tigs­ten Methoden in der Übersicht vor.

Methode Funktion
abs() Big­De­ci­mal mit dem absoluten Wert dieses Big­De­ci­mals
add() Gibt einen Big­De­ci­mal aus, dessen Wert sich zu­sam­men­setzt aus (this + Addend).
divide() Der Wert der Ausgabe ergibt sich durch (this / Divisor).
max(Big­De­ci­mal val) Gibt das Maximum dieses Big­De­ci­mals aus.
min(Big­De­ci­mal val) Gibt das Minimum dieses Big­De­ci­mals aus.
mo­ve­Point­Left(int n) Gibt einen Big­De­ci­mal aus, bei dem der De­zi­mal­punkt um den Wert „n“ nach links ver­scho­ben wurde.
mo­ve­Po­in­tRight(int n) Gibt einen Big­De­ci­mal aus, bei dem der De­zi­mal­punkt um den Wert „n“ nach rechts ver­scho­ben wurde.
multiply(Big­De­ci­mal mul­ti­pli­cand, Math­Con­text mc) Gibt einen Wert aus, der sich aus (this * Mul­ti­pli­kant) ergibt.
Tipp

In unserem Digital Guide erfahren Sie noch viel mehr über die bekannte und beliebte Pro­gram­mier­spra­che: Lernen Sie zum Beispiel die Java-Ope­ra­to­ren kennen und erfahren Sie alles Wichtige über die Un­ter­schie­de zwischen Java und Ja­va­Script oder Java und Python.

Zum Hauptmenü