Formatea un BigDecimal como String con un máximo de 2 dígitos decimales, eliminando 0 en la parte decimal

Tengo un número BigDecimal y considero solo 2 lugares decimales, así que lo trunco ​​usando:

bd = bd.setScale(2, BigDecimal.ROUND_DOWN) 

Ahora quiero imprimirlo como Cadena 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 ()?

Usé DecimalFormat para formatear el BigDecimal en lugar de formatear el String, parece que no hay problemas con él.

El código es algo como esto:

 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); 
 new DecimalFormat("#0.##").format(bd) 

Utilice stripTrailingZeros() .

Este artículo debería ayudarte.

El siguiente código puede ayudarte.

 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 es usado:

 NumberFormat.getNumberInstance(java.util.Locale.US).format(bd)