Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Perda de precisão de hibernação nos resultados ao mapear um número (22,21) para BigDecimal


É 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.