2010-12-13 27 views
8

Tôi đang sử dụng DecimalFormat mẫu sau:Làm cách nào để thay đổi hành vi DecimalFormat dựa trên độ dài đầu vào?

// Use ThreadLocal to ensure thread safety. 
private static final ThreadLocal <NumberFormat> numberFormat = 
    new ThreadLocal <NumberFormat>() { 
    @Override protected NumberFormat initialValue() { 
     return new DecimalFormat("#,##0.00"); 
    } 
}; 

này thực hiện các chuyển đổi sau:

1 -> 1.00 
1.1 -> 1.10 
1.12 -> 1.12 

bây giờ tôi có một yêu cầu bổ sung.

1.123 -> 1.123 
1.1234 -> 1.123 

Điều đó có nghĩa rằng khi

  • có ít hơn hai chữ số thập phân, tôi sẽ "pad" đến hai chữ số thập phân.
  • có chính xác hai hoặc ba chữ số thập phân, tôi sẽ không làm gì cả.
  • có nhiều hơn ba chữ số thập phân, tôi sẽ cắt ngắn thành ba chữ số thập phân.

Tôi có thể chỉ định hành vi này với lớp DecimalFormat không?

Trả lời

4
DecimalFormat("#,##0.00#") 
+0

Đó là thực sự là một giải pháp thanh lịch! –

Các vấn đề liên quan