Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Valores duplos incorretos retornados do mysql para java


Esse comportamento é esperado para o número de ponto flutuante. Você pode ler como o IEEE 754 funciona https://en.wikipedia.org/wiki/IEEE_754 .

Mas acho que há outro problema acontecendo. Você diz que o número é duplo (64 bits), mas com base no resultado parece que ele é convertido em float (32 bits)
-42295.8451869851 -> 0xC0E4A6FB0BC59380 (64bit) - 0xC72537D8 (32bit)

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

Se você deseja manter a precisão correta, precisa defini-la corretamente tanto no banco de dados quanto no Java, use https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html