Това е резултат от инициализиране на BigDecimal
от double
:
System.out.println(String.format("%21.20f", new BigDecimal(0.493));
// Prints 0,49299999999999999378
И така, когато BigDecimal
инициализирано по този начин се записва в базата данни, създава неточна стойност, която се зарежда правилно по-късно.
Ако BigDecimal
се инициализира от низ или ако стойността е зададена директно в Java, всичко работи добре.