Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Falsche Double-Werte von MySQL an Java zurückgegeben

Dieses Verhalten wird für die Gleitkommazahl erwartet. Wie IEEE 754 funktioniert, können Sie nachlesen https://en.wikipedia.org/wiki/IEEE_754 .

Aber ich denke, es gibt noch ein anderes Problem. Sie sagen, dass die Zahl doppelt ist (64-Bit), aber basierend auf dem Ergebnis sieht es so aus, als würde sie in Float (32-Bit) konvertiert werden

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

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

Wenn Sie die Genauigkeit beibehalten möchten, müssen Sie sie sowohl in DB als auch in Java korrekt definieren, indem Sie https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html