2009-08-22 9 views
15

私はJavaを使い慣れず、BigDecimal(たとえば99999999.99)を文字列に変換しようとしましたが、小数点および末尾の数字は使用しません。また、数字にコンマは必要なく、丸めは不要です。Java BigDecimalは10進数と末尾の数字を削除します

私が試してみた:

Math.Truncate(number) 

をしかしBigDecimalのはサポートされていません。

アイデア?

ありがとうございました。

答えて

31

number.toBigInteger().toString()

+0

完璧、ありがとう。 –

34

これを使用してみてください。

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

分数のないBigDecimalは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」を使用していた、念のために向かって丸める丸めモードは、両方の隣人が等距離でない限り、「最近隣」

関連する問題