83

BigDecimal 数値があり、小数点以下 2 桁のみを考慮しているため、次を使用して切り捨てます。

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

今、文字列として出力したいのですが、0 の場合は小数部分を削除します。次に例を示します。

1.00 -> 1

1.50 -> 1.5

1.99 -> 1.99

フォーマッター formatter.format を使用してみましたが、常に 2 桁の 10 進数を取得します。

これどうやってするの?多分 bd.toPlainString() からの文字列に取り組んでいますか?

4

5 に答える 5

110

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);
于 2012-05-04T23:22:11.080 に答える
71
new DecimalFormat("#0.##").format(bd)
于 2013-01-14T18:26:17.427 に答える
14

以下のコードが役立つ場合があります。

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);
}
于 2015-06-03T05:56:36.037 に答える
12

を使用しstripTrailingZeros()ます。

この記事はあなたを助けるはずです。

于 2012-04-22T15:26:42.517 に答える