J'ai un nombre BigDecimal et je ne considère que 2 décimales, donc je le tronque en utilisant:
bd = bd.setScale(2, BigDecimal.ROUND_DOWN)
Maintenant, je veux l’imprimer sous forme de chaîne mais en supprimant la partie décimale si elle est 0, par exemple:
1,00 -> 1
1,50 -> 1,5
1,99 -> 1,99
J'ai essayé d'utiliser un formateur, formatter.format mais je reçois toujours les 2 chiffres décimaux.
Comment puis-je faire ceci? Peut-être que vous travaillez sur la chaîne de bd.toPlainString ()?
J'ai utilisé DecimalFormat pour formater le BigDecimal au lieu de formater la chaîne, ne semble pas poser de problèmes.
Le code ressemble à ceci:
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)
Utilisez stripTrailingZeros()
.
Cet article devrait vous aider.
Le code ci-dessous peut vous aider.
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 son argent utilise:
NumberFormat.getNumberInstance(Java.util.Locale.US).format(bd)