Używam następujący DecimalFormat
wzoru:Jak mogę zmienić zachowanie DecimalFormat na podstawie długości wejściowej?
// Use ThreadLocal to ensure thread safety.
private static final ThreadLocal <NumberFormat> numberFormat =
new ThreadLocal <NumberFormat>() {
@Override protected NumberFormat initialValue() {
return new DecimalFormat("#,##0.00");
}
};
ten wykonuje następujące konwersje:
1 -> 1.00
1.1 -> 1.10
1.12 -> 1.12
mam teraz dodatkowy wymóg.
1.123 -> 1.123
1.1234 -> 1.123
Oznacza to, że gdy
- jest mniej niż dwa miejsca po przecinku, będę "pad" do dwóch miejsc po przecinku.
- są dokładnie dwa lub trzy miejsca po przecinku, nic nie zrobię.
- jest więcej niż trzy miejsca po przecinku, obcię do trzech miejsc po przecinku.
Czy mogę określić to zachowanie dla klasy DecimalFormat
?
To jest naprawdę eleganckie rozwiązanie! –