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