2009-08-22 46 views
15

Java için yeni bir BigDecimal (örneğin 99999999,99) alıp bir dizeye dönüştürüyorum, ancak ondalık basamak ve sondaki numaralar olmadan. Ayrıca, sayımda virgül istemiyorum ve yuvarlama gerekli değildir.Java BigDecimal ondalık ve sondaki sayıları kaldır

Math.Truncate(number) 

ama BigDecimal desteklenmez:

denedim.

Herhangi bir fikrin var mı?

Çok teşekkürler.

cevap

31

number.toBigInteger().toString()

+0

Mükemmel, teşekkürler. –

34

kullanın Bunu deneyin.

4

BigDecimal kesirsiz BigInteger'dir. Neden sadece BigInteger kullanmıyorsun?

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
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

İşte bu sorunu çözmek için bulduğu en zarif yolu ben sadece emin olmak için, 'BigDecimal.ROUND_HALF_UP' kullandık, Yuvarlama modu doğru yuvarlamak Her iki komşu eşit olmayan "en yakın komşu"

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; 
} 

unutmayın::

İlgili konular