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 Berechnung des größten gemeinsamen Teilers zweier BigIntegers
- die Ermittlung von Primzahlen
- die genaue Beeinflussung des Rundungsverfahrens bei BigDecimal
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:
- Für einen long-Wert kann mit der statischen Methode BigInterger.valueOf() ein entsprechendes BigInteger- oder auch BigDecimal-Exemplar erzeugt werden.
- Zu einem double-Wert kann mit einem Konstruktor von BigDecimal ein entsprechendes Exemplar gewonnen werden.
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.