Đó 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.