Я знаю, что могу использовать метод BigDecimal.divide()
для установки фиксированной точности:
BigDecimal a1 = new BigDecimal(1);
BigDecimal a2 = new BigDecimal(3);
BigDecimal division = a1.divide(a2,5,1); //equals 0.33333
Но если результат деления точен:
BigDecimal a1 = new BigDecimal(1);
BigDecimal a2 = new BigDecimal(4);
BigDecimal division = a1.divide(a2,5,1); //equals 0.25000
Как я могу установить результат деления, чтобы, если деление заканчивается точным результатом, оно просто давало результат 0,25 вместо 0,25000?
Я также пытался не указывать точность, выполнив:
BigDecimal division = a1.divide(a2);
ему удается дать результат 0.25
при выполнении 1/4
, но когда он выполняет деление, такое как 1/3
или 2/3
, это приводит к времени выполнения ArithmeticException
.
a1
и a2
создаются из пользовательского ввода.
Есть ли способ решить эту проблему?
RoundingMode
, а не передачу в целочисленном режиме округления значений. Даже если по какой-либо причине вам необходимо использовать целочисленные методы, используйте константы вBigDecimal
, например.BigDecimal.ROUND_DOWN
. - person dimo414   schedule 06.05.2015