Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Hibernate Genauigkeitsverlust in Ergebnissen, wenn eine Zahl (22,21) auf BigDecimal abgebildet wird

Es ist ein Ergebnis der Initialisierung von BigDecimal von double :

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

Also, wenn BigDecimal so initialisiert in der Datenbank gespeichert wird, erzeugt es einen ungenauen Wert, der später korrekt geladen wird.

Wenn BigDecimal per String initialisiert wird oder der Wert direkt in Java gesetzt wird funktioniert alles einwandfrei.