É o resultado da inicialização do
BigDecimal
de double
:System.out.println(String.format("%21.20f", new BigDecimal(0.493));
// Prints 0,49299999999999999378
Então, quando
BigDecimal
inicializado desta forma é salvo no banco de dados, produz um valor impreciso, que é carregado corretamente posteriormente. Se
BigDecimal
é inicializado por string ou se o valor for definido diretamente em Java tudo funciona bem.