Используемый метод divide
устанавливает масштаб результата равным масштабу исходного объекта:
BigDecimal.divide (BigDecimal, int)
Возвращает BigDecimal, значение которого (this / divisor), и масштаб которого this.scale ().Если для получения результата с заданным масштабом необходимо выполнить округление, применяется указанный режим округления.
Поскольку вы создаете b
из "80e5", его масштаб равен -5, а divide
должен округлить результат до 1e + 5:
jshell> var b = new BigDecimal("80e5");
b ==> 8.0E+6
jshell> b.scale()
$4 ==> -5
jshell> var c = b.divide(new BigDecimal("1000"), BigDecimal.ROUND_UP);
c ==> 1E+5
jshell> c.scale()
$6 ==> -5
.Решив это, вы можете установить желаемую шкалу для результата при делении:
jshell> b.divide(new BigDecimal("1000"), 0, BigDecimal.ROUND_UP);
$7 ==> 8000