Questo comportamento è previsto per il numero a virgola mobile. Puoi leggere come funziona IEEE 754 https://en.wikipedia.org/wiki/IEEE_754 .
Ma penso che ci sia un altro problema che sta accadendo. Dici che il numero è doppio (64 bit), ma in base al risultato sembra che venga convertito in float (32 bit)
-42295.8451869851 -> 0xC0E4A6FB0BC59380 (64bit) - 0xC72537D8 (32bit)
-42295.84518699004 -> 0xC0E4A6FB0BC59627 (64bit)- 0xC72537D8 (32bit)
Se vuoi mantenere la precisione corretta allora devi definirla correttamente sia in DB che poi in Java usa https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html