java decimal bigdecimal

Java BigDecimal elimina números decimales y finales



precision scale jpa (6)

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

He intentado:

Math.Truncate(number)

pero BigDecimal no es compatible.

¿Algunas ideas?

Muchas gracias.


Aquí está la manera más elegante que encontré para resolver esto:

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


BigDecimal sin fracciones es BigInteger. ¿Por qué no usas BigInteger?


Prueba number.toBigInteger().toString()


Utilizar esta.

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


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


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'', solo para asegurarme, el modo Redondeo para redondear al "vecino más cercano" a menos que ambos vecinos estén equidistantes