Es ist ein Ergebnis der Initialisierung von BigDecimal
von double
:
System.out.println(String.format("%21.20f", new BigDecimal(0.493));
// Prints 0,49299999999999999378
Also, wenn BigDecimal
so initialisiert in der Datenbank gespeichert wird, erzeugt es einen ungenauen Wert, der später korrekt geladen wird.
Wenn BigDecimal
per String initialisiert wird oder der Wert direkt in Java gesetzt wird funktioniert alles einwandfrei.