web-dev-qa-db-ja.com

BigDecimalを最大2桁の10進数で文字列としてフォーマットし、小数部分の0を削除します

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()からの文字列に取り組んでいますか?

69
res1

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

stripTrailingZeros()を使用します。

これ 記事が役立ちます。

10
lrAndroid

以下のコードが役立ちます。

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);
}
10

そのお金が使用する場合:

NumberFormat.getNumberInstance(Java.util.Locale.US).format(bd)
3
Heisenberg