8

私は次のDecimalFormatパターンを使用しています:

// Use ThreadLocal to ensure thread safety.
private static final ThreadLocal <NumberFormat> numberFormat =
  new ThreadLocal <NumberFormat>() {
    @Override protected NumberFormat initialValue() {
        return new DecimalFormat("#,##0.00");
    }
};

これにより、次の変換が実行されます。

1    -> 1.00
1.1  -> 1.10
1.12 -> 1.12

追加の要件があります。

1.123  -> 1.123
1.1234 -> 1.123

つまり、いつ

  • 小数点以下 2 桁未満の場合は、小数点以下 2 桁まで「パディング」します。
  • 小数点以下がちょうど 2 桁か 3 桁あるので、何もしません。
  • 小数点以下 3 桁を超える場合は、小数点以下 3 桁まで切り捨てます。

DecimalFormatクラスでこの動作を指定できますか?

4

2 に答える 2

4
DecimalFormat("#,##0.00#")
于 2010-12-13T14:01:12.627 に答える
1

インスタンスのRoundingModeを変更しようとしましたか?DecimalFormat

呼び出しsetRoundingMode(RoundingMode.FLOOR)はトリックを行う必要があります

こちらもご覧くださいsetRoundingMode(java.math.RoundingMode)

于 2010-12-13T13:58:56.583 に答える