How can I change DecimalFormat behavior based on input length?
I am using the following DecimalFormat
pattern:
// Use ThreadLocal to ensure thread safety.
private static final ThreadLocal <NumberFormat> numberFormat =
new ThreadLocal <NumberFormat>() {
@Override protected NumberFormat initialValue() {
return new DecimalFormat("#,##0.00");
}
};
This performs the following conversions:
1 -> 1.00
1.1 -> 1.10
1.12 -> 1.12
I now have an additional requirement.
1.123 -> 1.123
1.1234 -> 1.123
That means that when
- there are fewer than two decimal places, I will "pad" to two decimal places.
- there are exactly two or three decimal places, I will do nothing.
- there are more than three decimal places, I will truncate to three decimal places.
Can I specify this behavior with the Decima开发者_如何转开发lFormat
class?
DecimalFormat("#,##0.00#")
Have you tried to change the RoundingMode of your DecimalFormat
instance?
Calling setRoundingMode(RoundingMode.FLOOR)
should do the trick
See also setRoundingMode(java.math.RoundingMode)
精彩评论