Hành vi này được mong đợi đối với số dấu phẩy động. Bạn có thể đọc cách hoạt động của IEEE 754 https://en.wikipedia.org/wiki/IEEE_754 .
Nhưng tôi nghĩ có một vấn đề khác đang xảy ra. Bạn nói rằng số là gấp đôi (64-bit), nhưng dựa trên kết quả, có vẻ như nó được chuyển đổi thành float (32-bit)
-42295.8451869851 -> 0xC0E4A6FB0BC59380 (64bit) - 0xC72537D8 (32bit)
-42295.84518699004 -> 0xC0E4A6FB0BC59627 (64bit)- 0xC72537D8 (32bit)
Nếu bạn muốn giữ độ chính xác chính xác thì bạn cần phải xác định nó một cách chính xác cả trong DB và sau đó trong Java, hãy sử dụng https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html