BigDecimal番号があり、小数点以下2桁しか考慮していないため、以下を使用して切り捨てます。
bd = bd.setScale(2, BigDecimal.ROUND_DOWN)
今、私はそれを文字列として印刷したいが、それが0である場合、小数部分を削除する、例えば:
1.00-> 1
1.50-> 1.5
1.99-> 1.99
Formatter、formatter.formatを使用してみましたが、常に2桁の10進数を取得します。
これどうやってするの?多分bd.toPlainString()からの文字列に取り組んでいますか?
BigDecimalのフォーマットには、StringのフォーマットではなくDecimalFormatを使用しましたが、問題はないようです。
コードは次のようなものです。
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)
stripTrailingZeros()
を使用します。
これ 記事が役立ちます。
以下のコードが役立ちます。
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);
}
そのお金が使用する場合:
NumberFormat.getNumberInstance(Java.util.Locale.US).format(bd)