2009-08-22 22 views
15

Sono nuovo in Java e sto provando a prendere un BigDecimal (ad esempio 99999999.99) e convertirlo in una stringa ma senza il numero decimale e i numeri finali. Inoltre, non voglio virgole nel numero e l'arrotondamento non è necessario.Java BigDecimal rimuove i numeri decimali e finali

ho provato:

Math.Truncate(number) 

ma BigDecimal non è supportata.

Qualche idea?

Grazie mille.

risposta

31

Prova number.toBigInteger().toString()

+0

Perfetto, grazie. –

34

Utilizzare questo.

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

BigDecimal senza frazioni è BigInteger. Perché non usi semplicemente 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

Ecco il modo più elegante che ho trovato per risolvere questo:

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

Si prega di notare: ho usato 'BigDecimal.ROUND_HALF_UP', solo per assicurarsi che, modalità di arrotondamento per arrotondare verso "vicino più vicino" a meno che entrambi i vicini siano equidistanti

Problemi correlati