Как сохранить нули в конце при делении BigDecimal

У меня есть требование, когда мне нужно разделить одно число BigDecimal на 100 и показать точную сумму, которая получается, не удаляя конечные нули. Но нули обрезаются по умолчанию. Как мне предотвратить это?

BigDecimal endDte = new BigDecimal("2609.8200");
BigDecimal startDte = new BigDecimal("100");


BigDecimal finalPerformance = endDte.divide(startDte);
System.out.println(finalPerformance.toString());

Выход: 26.0982 Ожидается: 26.098200


person Loren    schedule 29.05.2020    source источник
comment
Согласно javadocs, результирующая шкала будет a.scale - b.scale.   -  person Scary Wombat    schedule 29.05.2020
comment
Это может ответить на ваш вопрос: stackoverflow.com/ вопросы/3395825/   -  person Alex R    schedule 29.05.2020
comment
Нет, не помогает.   -  person Loren    schedule 29.05.2020
comment
Отвечает ли это на ваш вопрос? Как распечатать форматированные значения BigDecimal?   -  person zforgo    schedule 29.05.2020
comment
Это просто проблема с печатью, а не для BigDecimals. Все, что вам нужно, это отформатировать вывод с помощью класса DecimalFormat.   -  person dgebert    schedule 29.05.2020


Ответы (1)


То, что вы хотите, это форматирование, поскольку эти 0 не добавляют значения. Вы можете использовать это, и вы получите желаемый результат.


        BigDecimal endDte = new BigDecimal("2609.8200");
        BigDecimal startDte = new BigDecimal("100");

        BigDecimal finalPerformance = endDte.divide(startDte);
        System.out.printf("%2.6f%n", finalPerformance);

Другой вариант, если вы всегда хотите разделить на 100, вы можете просто сдвинуть десятичную дробь. Когда вы это сделаете, точность останется прежней. В этом случае попробуйте новый код


        BigDecimal endDte = new BigDecimal("2609.8200");
        //BigDecimal startDte = new BigDecimal("100");


        BigDecimal finalPerformance = endDte.movePointLeft(2);
        System.out.println(finalPerformance);
person Hemang    schedule 29.05.2020
comment
Нет, не работает, если значение 2609,82001 удаляет 1 с конца. - person Loren; 29.05.2020
comment
То, что я сделал, это просто форматирование. Все, что я говорю, это печатать 6 знаков после запятой. - person Hemang; 29.05.2020
comment
movePointLeft — это то, что я искал. Спасибо ! - person Loren; 29.05.2020