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