Ich habe eine BigDecimal-Zahl und betrachte nur 2 Dezimalstellen, also schneide ich sie ab mit:
bd = bd.setScale(2, BigDecimal.ROUND_DOWN)
Jetzt möchte ich es als String drucken, aber den Dezimalteil entfernen, wenn er 0 ist, zum Beispiel:
1,00 -> 1
1,50 -> 1,5
1,99 -> 1,99
Ich habe versucht, einen Formatierer, formatter.format, zu verwenden, aber ich bekomme immer die 2 Dezimalstellen.
Wie kann ich das machen? Vielleicht an der Zeichenfolge von bd.toPlainString () arbeiten?
java
formatting
bigdecimal
res1
quelle
quelle
df.setMinimumFractionDigits(2)
funktioniert ohne setScale und setGrouping sowie setMaxFrac einwandfrei.NumberFormat numberFormat = NumberFormat.getPercentInstance();
dannnumberFormat.setMinimumFractionDigits(2);
dannString percent = numberFormat.format(yourBigDecimal);
BigDecimal.ROUND_DOWN
ist veraltet. Verwenden SieRoundingMode.DOWN
stattdessen.new DecimalFormat("#0.##").format(bd)
quelle
new DecimalFormat("0.00")
wenn ich sicherstellen möchte, dass die beiden Dezimalstellen immer angezeigt werden, z . B.1000.5
wird angezeigt als1000.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); } }
Der folgende Code kann Ihnen helfen.
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); }
quelle
Verwenden Sie
stripTrailingZeros()
.Dieser Artikel soll Ihnen helfen.
quelle
Wenn sein Geld verwendet:
quelle