2009-08-22 37 views
15

我是新來的Java和嘗試採取BigDecimal(例如99999999.99)並將其轉換爲字符串,但沒有小數位和尾隨數字。另外,我不想在逗號中輸入逗號,舍入也不需要。Java BigDecimal刪除十進制和結尾數字

我已經試過:

Math.Truncate(number) 

但不支持BigDecimal的。

任何想法?

非常感謝。

回答

31

嘗試number.toBigInteger().toString()

+0

完美,謝謝。 – 2009-08-22 23:26:22

34

使用此項。

BigDecimal truncated= number.setScale(0,BigDecimal.ROUND_DOWN); 
4

BigDecimal without fractions是BigInteger。你爲什麼不使用BigInteger?

0
private void showDoubleNo(double n) { 
    double num = n; 
    int decimalPlace = 2; 
    BigDecimal bd = new BigDecimal(num); 
    bd = bd.setScale(decimalPlace,BigDecimal.ROUND_UP); 
    System.out.println("Point is "+bd); 
} 
2

這裏是最優雅的方式,我發現解決此問題:

public static String convertDecimalToString (BigDecimal num){ 
    String ret = null; 
    try { 
     ret = num.toBigIntegerExact().toString(); 
    } catch (ArithmeticException e){ 
     num = num.setScale(2,BigDecimal.ROUND_UP); 
     ret = num.toPlainString(); 
    } 
    return ret; 
} 
0
public static String convertBigDecimalToString(BigDecimal bg) { 
     System.out.println("Big Decimal Value before its convertion :" + bg.setScale(2, BigDecimal.ROUND_HALF_UP)); 

     String bigDecStringValue = bg.setScale(0,BigDecimal.ROUND_HALF_UP).toPlainString(); 

     System.out.println("Big Decimal String Value after removing Decimal places is :" + bigDecStringValue); 

     return bigDecStringValue; 
} 

請注意:我用「BigDecimal.ROUND_HALF_UP」,只是爲了確保,舍入模式走向「最近的鄰居」除非兩個鄰居都是等距的

相關問題