2009-08-22 10 views
15

Ich bin neu in Java und versuche, ein BigDecimal zu nehmen (zum Beispiel 99999999.99) und wandle es in eine Zeichenkette, aber ohne die Dezimalstelle und die nachfolgenden Zahlen. Außerdem möchte ich keine Kommas in der Zahl und Rundung wird nicht benötigt.Java BigDecimal dezimale und nachfolgende Zahlen entfernen

Ich habe versucht:

Math.Truncate(number) 

aber BigDecimal wird nicht unterstützt.

Irgendwelche Ideen?

Vielen Dank.

Antwort

31

Versuchen number.toBigInteger().toString()

+0

Perfekt, danke. –

34

Verwenden Sie diese.

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

BigDecimal ohne Brüche ist BigInteger. Warum benutzen Sie nicht einfach 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

Hier ist die eleganteste Art, wie ich dieses Problem zu beheben gefunden:

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

Bitte beachten Sie: ich verwendet habe ‚BigDecimal.ROUND_HALF_UP‘, nur um sicher zu machen, Rounding Modus abzurunden Richtung "nächster Nachbar", wenn nicht beide Nachbarn äquidistant sind