Det är ett resultat av initialisering av BigDecimal
från double
:
System.out.println(String.format("%21.20f", new BigDecimal(0.493));
// Prints 0,49299999999999999378
Så när BigDecimal
initierat på detta sätt sparas i databasen, producerar det ett felaktigt värde, som läses in korrekt senare.
Om BigDecimal
initieras av sträng eller om värdet är satt direkt i Java fungerar allt bra.