2009-08-22 255 views
15

Soy nuevo en Java y trato de tomar un BigDecimal (por ejemplo, 99999999.99) y convertirlo en una cadena, pero sin el número decimal y los números finales. Además, no quiero comas en el número y el redondeo no es necesario.Java BigDecimal eliminar números decimales y finales

que he probado:

Math.Truncate(number) 

pero BigDecimal no es compatible.

¿Alguna idea?

Muchas gracias.

Respuesta

31

Trate number.toBigInteger().toString()

+0

Perfecto, gracias. –

34

Utilice esta.

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

BigDecimal sin fracciones es BigInteger. ¿Por qué no solo usas 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

Ésta es la forma más elegante que he encontrado para resolver este:

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

Tenga en cuenta: He usado 'BigDecimal.ROUND_HALF_UP', sólo para asegurarse, el modo de redondeo para redondear hacia "vecino más cercano" a menos que ambos vecinos sean equidistantes

Cuestiones relacionadas