Това поведение се очаква за числото с плаваща запетая. Можете да прочетете как работи IEEE 754 https://en.wikipedia.org/wiki/IEEE_754 .
Но мисля, че се случва друг проблем. Казвате, че числото е двойно (64-битово), но въз основа на резултата изглежда, че се преобразува в float (32-битово)
-42295.8451869851 -> 0xC0E4A6FB0BC59380 (64bit) - 0xC72537D8 (32bit)
-42295.84518699004 -> 0xC0E4A6FB0BC59627 (64bit)- 0xC72537D8 (32bit)
Ако искате да запазите точността правилна, тогава трябва да я дефинирате правилно както в DB, така и в Java, използвайте https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html