Je to výsledek inicializace BigDecimal
z double
:
System.out.println(String.format("%21.20f", new BigDecimal(0.493));
// Prints 0,49299999999999999378
Takže, když BigDecimal
takto inicializovaný se uloží do databáze, vytvoří nepřesnou hodnotu, která se později správně načte.
Pokud BigDecimal
je inicializován řetězcem nebo pokud je hodnota nastavena přímo v Javě, vše funguje dobře.