Die Datentypen double und float sind primitive Typen. Der Unterschied zu Klassen und Wrappen liegt for allem in der besseren Performance, da bei diesen kein Objekt mit new erzeugt werden muss.
Für die Anwendungsentwicklung sind diese Datentypen jedoch ungeeignet, da Sie Dezimalzahlen nicht exakt speichern können.
double d = 1234.56;
BigDecimal number = new BigDecimal(d);
System.out.println(number.toString());
Ergebnis: 1234.55999999999994543031789362430572509765625
Im Gegensatz zu double und float kann die Klasse BigDecimal Dezimalzahlen mit beliebigen Nachkommastellen exakt speichern und bietet darüberhinaus Funktionen zur genauen Berechnung. Für Dezimalzahlen wie Preise oder Prozentsätze wird deshalb hauptsächlich BigDecimal eingesetzt.
Man sollte aber darauf achten BigDecimal richtig zu initialsieren, nämlich über den String Konstruktor, damit die Zahl mit exakten Nachkommastellen gespeichert wird.
BigDecimal number = new BigDecimal("1234.56");
System.out.println(number.toString());
Ergebnis: 1234.56
Autor: Johannes HammoudKommentare Datum: 22.10.2007