Đó là kết quả của việc khởi tạo BigDecimal từ double :
System.out.println(String.format("%21.20f", new BigDecimal(0.493));
// Prints 0,49299999999999999378
Vì vậy, khi BigDecimal khởi tạo theo cách này sẽ được lưu trong cơ sở dữ liệu, nó tạo ra một giá trị không chính xác, giá trị này sẽ được tải chính xác sau này.
Nếu BigDecimal được khởi tạo bằng chuỗi hoặc nếu giá trị được đặt trực tiếp trong Java thì mọi thứ đều hoạt động tốt.