Weitere aktuelle Java-Titel finden Sie bei dpunkt.
 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index


2.16.7

Rechnen mit beliebiger Genauigkeit


Für Fälle, in denen der Wertebereich bzw. die Genauigkeit der einfachen numerischen Datentypen nicht ausreicht, stellt die Standardbibliothek das Paket java.math mit seinen beiden Klassen BigInteger und BigDecimal zur Verfügung. Diese Klassen bieten die Möglichkeit, Zahlen mit beliebiger Größe darzustellen. Bei BigDecimal wird die Mantisse intern mit einer BigInteger dargestellt und der Exponent getrennt gespeichert. Durch diesen Aufbau können mit BigDecimal Dezimal-Operationen ohne Genauigkeitsverlust durchgeführt werden.

Auf Zahlen, die mit diesen beiden Klassen dargestellt werden, können die Operatoren für die einfachen numerischen Datentypen nicht angewendet werden. Stattdessen muss auf die entsprechenden Methoden zurückgegriffen werden, die aber die Bandbreite der Standardoperatoren voll abdecken und darüber hinaus noch mehr Funktionalität bieten. Dazu zählt zum Beispiel: Die beiden Klassen können mit den Methoden intValue(), longValue(), floatValue() und doubleValue() in die einfachen Datentypen konvertiert werden. Für den umgekehrten Weg, der direkten Konvertierung von long oder double in BigInteger oder BigDecimal gibt es folgende Verfahren: Der folgende Codeabschnitt zeigt einige Beispiele für BigInteger und BigDecimal.
  long l = 5;
  BigInteger bigInt1, bigInt2;
  BigDecimal bigDec;

  bigInt1 = BigInteger.valueOf(l);
  // bigInt1 bleibt durch die Operation unverändert!
  bigInt2 = bigInt1.add(new BigInteger("3456"));
  bigDec = new BigDecimal(bigInt2, 5);

  System.out.println("bigInt1: "+bigInt1);
  System.out.println("bigInt2: "+bigInt2);
  System.out.println("bigDec: "+bigDec);
Diese Anweisungen erzeugen die Ausgabe:
  bigInt1: 5
  bigInt2: 3461
  bigDec: 0.03461
Bei den Methoden, die so wie add() im Beispiel Rechenoperationen vornehmen, ist zu beachten, dass das aufgerufene Objekt stets unverändert bleibt und das Ergebnis der Operation in einem neu erzeugten Objekt zurückgeliefert wird.


 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index

Copyright © 2002 dpunkt.Verlag, Heidelberg. Alle Rechte vorbehalten.