如何根据输入长度更改DecimalFormat行为?

时间:2010-12-13 13:16:57

标签: java format decimal number-formatting decimalformat

我使用以下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

这意味着什么时候

  • 小于两位小数,我将“填充”到小数点后两位。
  • 正好有两三个小数位,我什么都不做。
  • 小数点后超过三位,我将截断到三位小数。

我可以使用DecimalFormat类指定此行为吗?

2 个答案:

答案 0 :(得分:4)

DecimalFormat("#,##0.00#")

答案 1 :(得分:1)

您是否尝试更改DecimalFormat个实例的 RoundingMode

调用setRoundingMode(RoundingMode.FLOOR)应该可以解决问题

另见setRoundingMode(java.math.RoundingMode)