2015-10-08 2 views
-2

Я пытаюсь разделить 193251715/659669075 и получить результат 29.30% (так, чтобы округлить до ближайшего значения с двумя знаками после запятой)Отдела с двумя десятичными мест не работают

Вот что я имею сделано:

new BigDecimal(193251715).divide(new BigDecimal(659669075) , 2, RoundingMode.HALF_UP).multiply(new BigDecimal(100)) 

Но я получаю 29.

Что я делаю неправильно?

ответ

4

Это потому, что вы умножаетесь на 100, чтобы показать процент. Вы должны разделить с масштабом вместо 2, а затем установить масштаб 2:

new BigDecimal(193251715).divide(new BigDecimal(659669075), 4, RoundingMode.HALF_UP) 
         .multiply(new BigDecimal(100)) 
         .setScale(2) 
+0

Или просто начать с '100':.' Новый BigDecimal (100) .multiply (новый BigDecimal (193251715)) делят (новый BigDecimal (659669075), 2, RoundingMode.HALF_UP) '. – Keppil

+0

Большое спасибо! – Joly

2

набор scale of 4, чтобы включить больше десятичных пространства.

Установить масштаб 2, наконец, сделать 29.30 вместо 29.30000.

public static void main(String[] args) throws ParseException { 
     BigDecimal bg = new BigDecimal(193251715) 
       .divide(new BigDecimal(659669075), 4, RoundingMode.HALF_UP) 
       .multiply(new BigDecimal(100)).setScale(2); 
     System.out.println(bg); 
    } 
Смежные вопросы