Запрет преобразования в формат экспоненты в Java для Android при использовании BigDecimal - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь разделить 5 на 0,0005 , используя BigDecimal в Java в Android.

В результате я получаю 1E + 4 пока я хочу показать 10000 как результат.

Сейчас я делаю следующее:

BigDecimal aaaa = new BigDecimal("5");
BigDecimal bbbb = new BigDecimal("0.0005");

aaaa.divide( bbbb , new MathContext( 16, RoundingMode.DOWN) );

Я хочу 16 цифруточность с RoundingMode.DOWN

Scenerio 1 : не работает должным образом

aaaa = 5
bbbb = 0.0005
result => 1E+4
required => 10000

Scenerio 2 : работакак и ожидалось

aaaa = 100
bbbb = 3
result => 33.33333333333333
required => 33.33333333333333

Почему существуют разные выходные данные формат для обоих ответов с одинаковым кодом.Есть ли способ решить это?

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

Это было просто.Я получил именно то, что хочу, используя

BigDecimal.stripTrailingZeros().toPlainString();

Этот вывод на шоу, как мне требуется, без использования DecimalFormat

5 / 0.0005 => 10000 (and not in exponential format as => 1E+4)
100 / 3    => 33.33333333333333
0 голосов
/ 17 мая 2018

BigDecimal.toString()

Возвращает строковое представление этого BigDecimal, используя научные обозначение, если необходим показатель степени.

Вы можете использовать BigDecimal.toPlainString

Возвращает строковое представление этого BigDecimal без экспоненты поле.

public static void main(String[] args) {
    BigDecimal aaaa = new BigDecimal("5");
    BigDecimal bbbb = new BigDecimal("0.0005");

    BigDecimal result = aaaa.divide( bbbb , new MathContext( 16, RoundingMode.DOWN) );
    System.out.print(result.toPlainString()); //10000
}
...