представлять BigDecimal без десятичной части как целое число

1

Я должен показать значение BigDecimal как целое, если у него нет десятичной части.

Мое решение, как правило, работает, но проблема в том, что bigDecResult получает значение с наименьшими нулями после точки, например, 0.0000.

        BigDecimal bigDecResult = new BigDecimal("0.0000");

        if (bigDecResult.remainder(BigDecimal.ONE).equals(0)) {
            System.out.println(Integer.toString(bigDecResult.intValue()));

        } else {
            System.out.println(bigDecResult.toString());
        }

Как я могу получить 0 в случае bigDecResult = new BigDecimal("0.0000")?

  • 2
    Какая версия Java? Существует .stripTrailingZeros() , к сожалению, он .stripTrailingZeros() для всех версий JDK 7 и менее (к счастью, это исправлено в Java 8)
Теги:
bigdecimal

1 ответ

1
Лучший ответ
    BigDecimal bd = new BigDecimal("0.0000");

    if (bd.doubleValue() % 1 == 0.0 ){
    System.out.println(bd.setScale(0));

// You can also convert to Integer: 
// Integer response = bd.setScale(0).toBigInteger().intValue();

    } else {
    System.out.println(bd.setScale(4));
    }
  • 0
    Но мне нужно универсальное решение. Я не знаю заранее, будет ли это значение 0,000, 0,000000001 или 123123123,000002
  • 0
    а целочисленное значение должно быть только в первом случае
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню