java - redondear - Formatee un BigDecimal como cadena con un máximo de 2 dígitos decimales, eliminando 0 en la parte decimal
math.round java dos decimales (5)
Tengo un número BigDecimal y considero que solo tengo 2 decimales, así que lo truncamos usando:
bd = bd.setScale(2, BigDecimal.ROUND_DOWN)
Ahora quiero imprimirlo como String pero eliminando la parte decimal si es 0, por ejemplo:
1.00 -> 1
1.50 -> 1.5
1.99 -> 1.99
Intenté usar un Formatter, formatter.format pero siempre obtengo los 2 dígitos decimales.
¿Cómo puedo hacer esto? Tal vez trabajando en la cadena de bd.toPlainString ()?
El siguiente código puede ayudarle.
protected String getLocalizedBigDecimalValue(BigDecimal input, Locale locale) {
final NumberFormat numberFormat = NumberFormat.getNumberInstance(locale);
numberFormat.setGroupingUsed(true);
numberFormat.setMaximumFractionDigits(2);
numberFormat.setMinimumFractionDigits(2);
return numberFormat.format(input);
}
Si su dinero usa:
NumberFormat.getNumberInstance(java.util.Locale.US).format(bd)
Utilicé DecimalFormat para formatear BigDecimal en lugar de formatear el String, no parece haber problemas con él.
El código es algo así:
bd = bd.setScale(2, BigDecimal.ROUND_DOWN);
DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(2);
df.setMinimumFractionDigits(0);
df.setGroupingUsed(false);
String result = df.format(bd);
Utilice stripTrailingZeros()
.
This artículo debería ayudarte.
new DecimalFormat("#0.##").format(bd)