BigDecimal stripTrailingZeros doesn't work for zero
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?
Solution 1:
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();
}