Regel: BigDecimal

Heute eine wichtige Regel, die häufig nicht angewendet wird und nicht nur zu Cent Abweichungen führen kann.

Nutze nie float oder double für Berechnungen die eine genaue Berechnung erfordern. Nutze nur BigDecimal.

Hier ein kleines Beispiel. Wir sparen an 10 Tagen 0.10 Cent. Wie groß ist das Guthaben?

public static void main(String[] args) {

double preis = .10;
double guthaben = 0;

for (int i = 0; i < 10; i++) { guthaben += preis; } // 10 Teile a 0.10 Cent = // 0.9999999999999999 -> RUNDUNGSDIFFERENZEN
System.out.println("Guthaben=" + guthaben);

// Genauer mit BigDecimal:
final BigDecimal PREIS = new BigDecimal(".10");
BigDecimal genauesGuthaben = new BigDecimal("0");

for (int i = 0; i < 10; i++) { genauesGuthaben = genauesGuthaben.add(PREIS); } // Ohne rundungs Differenzen genau 1.00
System.out.println("Genaues Guthaben=" + genauesGuthaben);
}