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

Forkerte dobbeltværdier returneret fra mysql til java

Denne adfærd forventes for det flydende decimaltal. Du kan læse, hvordan IEEE 754 virker https://en.wikipedia.org/wiki/IEEE_754 .

Men jeg tror, ​​der er et andet problem ved at ske. Du siger, at tallet er dobbelt (64-bit), men baseret på resultatet ser det ud til, at det bliver konverteret til float(32-bit)

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

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

Hvis du vil holde præcisionen korrekt, skal du definere den korrekt både i DB og derefter i Java brug https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html



  1. PLS-00172:String literal too long error er kastet under indstilling af stor strengværdi til CLOB

  2. Brug af Guid som Id-kolonne i NHibernate forårsager formatundtagelse ved brug af MySQL

  3. Optimering af MySQL-forespørgsler med tunge joinforbindelser

  4. Kan du bruge flere kolonner til en ikke-forespørgsel?