sql >> Base de Datos >  >> RDS >> Oracle

Hibernate pierde precisión en los resultados al mapear un número (22,21) a BigDecimal

Es el resultado de inicializar BigDecimal de double :

System.out.println(String.format("%21.20f", new BigDecimal(0.493)); 
// Prints 0,49299999999999999378  

Entonces, cuando BigDecimal inicializado de esta manera se guarda en la base de datos, produce un valor inexacto, que se carga correctamente más tarde.

Si BigDecimal se inicializa por cadena o si el valor se establece directamente en Java, todo funciona bien.