Как сохранить конечные нули при делении BigDecimal - PullRequest
0 голосов
/ 29 мая 2020

У меня есть требование, при котором мне нужно разделить одно число 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

1 Ответ

2 голосов
/ 29 мая 2020

То, что вы хотите, - это форматирование, поскольку эти 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);
.
...