C'est le résultat de l'initialisation de BigDecimal de double :
System.out.println(String.format("%21.20f", new BigDecimal(0.493));
// Prints 0,49299999999999999378
Ainsi, lorsque BigDecimal initialisé de cette manière est enregistré dans la base de données, il produit une valeur inexacte, qui est correctement chargée ultérieurement.
Si BigDecimal est initialisé par une chaîne ou si la valeur est définie directement en Java, tout fonctionne correctement.