I have met strange bug in my code.
It relates with
new BigDecimal("1.2300").stripTrailingZeros()
returns 1.23
(correct)
but
new BigDecimal("0.0000").stripTrailingZeros()
returns 0.0000
(strange), thus nothing happens
Why?
How to fix it?
Seems that this is a bug (JDK-6480539) which was fixed in Java 8 (per OpenJDK commit 2ee772cda1d6).
Workaround for earlier versions of Java:
BigDecimal zero = BigDecimal.ZERO;
if (someBigDecimal.compareTo(zero) == 0) {
someBigDecimal = zero;
} else {
someBigDecimal = someBigDecimal.stripTrailingZeros();
}