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

Valeurs doubles incorrectes renvoyées de mysql à java

Ce comportement est attendu pour le nombre à virgule flottante. Vous pouvez lire comment fonctionne l'IEEE 754 https://en.wikipedia.org/wiki/IEEE_754 .

Mais je pense qu'il y a un autre problème qui se passe. Vous dites que le nombre est double (64 bits), mais d'après le résultat, il semble qu'il soit converti en float (32 bits)

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

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

Si vous souhaitez conserver la précision correcte, vous devez la définir correctement à la fois dans la base de données, puis dans Java, utilisez https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html