Сравнение
Важно никогда не использовать для сравнения BigDecimal метод .equals(). Этого нельзя делать потому, что функция equals будет сравнивать масштабы. Если масштабы различаются, .equals() вернёт ложь, даже если они математически равны:
BigDecimal a = new BigDecimal("2.00");
BigDecimal b = new BigDecimal("2.0");
print(a.equals(b)); // ложь
Вместо этого следует использовать методы .compareTo() и .signum().
a.compareTo(b); // возвращает (-1 если a < b), (0 если a == b), (1 если a > b)
a.signum(); // возвращает (-1 если a < 0), (0 если a == 0), (1 если a > 0)