Я использую следующий 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
?
Это действительно элегантное решение! –