Oracle
 sql >> Base de données >  >> RDS >> Oracle

Hibernate perte de précision dans les résultats lors du mappage d'un nombre (22,21) à BigDecimal

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.