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 String pero quitando la parte decimal si es 0, por ejemplo:
1,00 -> 1
1,50 -> 1,5
1,99 -> 1,99
Intenté usar un formateador, formatter.format pero siempre obtengo los 2 dígitos decimales.
¿Cómo puedo hacer esto? ¿Quizás esté trabajando en la cadena de bd.toPlainString ()?
java
formatting
bigdecimal
res1
fuente
fuente
df.setMinimumFractionDigits(2)
funciona bien sin setScale y setGrouping y setMaxFrac.NumberFormat numberFormat = NumberFormat.getPercentInstance();
luegonumberFormat.setMinimumFractionDigits(2);
entoncesString percent = numberFormat.format(yourBigDecimal);
BigDecimal.ROUND_DOWN
versiones posteriores están en desuso. Úselo en suRoundingMode.DOWN
lugar.new DecimalFormat("#0.##").format(bd)
fuente
new DecimalFormat("0.00")
si quiero asegurarme de que los dos lugares decimales se muestren siempre, por ejemplo,1000.5
se mostrarán como1000.50
.import java.math.BigDecimal; import java.text.*; public class LocalizeExample { public static void main(String[] args) { BigDecimal bd = new BigDecimal("123.10"); DecimalFormat decimalFormat = (DecimalFormat) NumberFormat.getNumberInstance(Locale.GERMAN); decimalFormat.applyPattern("#0.00"); String result = decimalFormat.format(bd); System.out.println(result); } }
El siguiente código puede ayudarlo.
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); }
fuente
Utilice
stripTrailingZeros()
.Este artículo debería ayudarte.
fuente
Si su uso de dinero:
fuente