Я не видел это ни в одном из других ответов, но одна вещь, которую я заметил, состоит в том, что я мог отладить настолько быстрее . Вы не должны выполнять развертку через свое приложение только с правильной последовательностью шагов, чтобы получить к коду Вашу фиксацию, только найти, что Вы совершили булеву ошибку и должны сделать все это снова. С модульным тестом можно просто ступить непосредственно в код, который Вы отлаживаете.
Используйте это.
BigDecimal truncated= number.setScale(0,BigDecimal.ROUND_DOWN);
BigDecimal без дробей - BigInteger. Почему бы вам просто не использовать BigInteger?