Oracle
 sql >> Database >  >> RDS >> Oracle

Sospensione della perdita di precisione nei risultati durante la mappatura di un numero (22,21) su BigDecimal

È il risultato dell'inizializzazione di BigDecimal da double :

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

Quindi, quando BigDecimal inizializzato in questo modo viene salvato nel database, produce un valore impreciso, che viene caricato correttamente in seguito.

Se BigDecimal è inizializzato da stringa o se il valore è impostato direttamente in Java tutto funziona correttamente.