如何根据输入长度更改DecimalFormat行为?
我使用以下DecimalFormat
模式:
// Use ThreadLocal to ensure thread safety. private static final ThreadLocal numberFormat = new ThreadLocal () { @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
类指定此行为吗?
DecimalFormat("#,##0.00#")
您是否尝试更改DecimalFormat
实例的RoundingMode ?
调用setRoundingMode(RoundingMode.FLOOR)
应该可以解决问题
另请参见setRoundingMode(java.math.RoundingMode)