round redondear float decimales con java formatting bigdecimal

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)