2015-03-23 2 views
1

Я должен показать значение BigDecimal как целое, если оно не имеет десятичной части.представляют BigDecimal без десятичной части как целое

Мое решение в целом работает, но проблема в том, когда bigDecResult получает значение с severals нулями после запятой, как 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")?

+1

Какая версия Java? Существует '.stripTrailingZeros()', к сожалению [это ошибка для всех версий JDK 7 и меньше] (http://stackoverflow.com/q/14772323/1093528) (к счастью, это исправлено в Java 8) – fge

ответ

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

, а целочисленное значение должно быть только в первом случае –

+0

Как насчет такого решения? Код обновлен. – RichardK

Смежные вопросы