Mysql
 sql >> Database >  >> RDS >> Mysql

Valori doppi errati restituiti da mysql a java

Questo comportamento è previsto per il numero a virgola mobile. Puoi leggere come funziona IEEE 754 https://en.wikipedia.org/wiki/IEEE_754 .

Ma penso che ci sia un altro problema che sta accadendo. Dici che il numero è doppio (64 bit), ma in base al risultato sembra che venga convertito in float (32 bit)

-42295.8451869851 -> 0xC0E4A6FB0BC59380 (64bit) - 0xC72537D8 (32bit)

-42295.84518699004 -> 0xC0E4A6FB0BC59627 (64bit)- 0xC72537D8 (32bit)

Se vuoi mantenere la precisione corretta allora devi definirla correttamente sia in DB che poi in Java usa https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html