1. ホーム
  2. java

[解決済み] BigDecimalを小数点以下2桁までの文字列としてフォーマットし、小数点以下は0を削除する。

2023-06-10 02:46:06

質問

BigDecimalの数値がありますが、小数点以下2桁までしか考慮されていないので、以下の方法で切り捨てています。

bd = bd.setScale(2, BigDecimal.ROUND_DOWN)

今度はStringで表示したいのですが、例えば0であれば小数点以下の部分を削除して表示します。

1.00 -> 1

1.50 -> 1.5

1.99 -> 1.99

Formatter.formatを使ってみましたが、いつも小数点以下2桁になってしまいます。

どうすればいいのでしょうか?bd.toPlainString()から文字列を操作するのが良いでしょうか?

どのように解決するのですか?

私は DecimalFormat の書式設定に BigDecimal をフォーマットする代わりに String で問題ないようです。

コードはこのようなものです。

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