2010-12-13 5 views
8

Sto usando il seguente DecimalFormat modello:Come posso modificare il comportamento di DecimalFormat in base alla lunghezza dell'input?

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

Questo esegue le seguenti conversioni:

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

mi hanno ora un ulteriore requisito.

1.123 -> 1.123 
1.1234 -> 1.123 

Ciò significa che quando

  • ci sono meno di due cifre decimali, lo farò "pad" a due cifre decimali.
  • ci sono esattamente due o tre posizioni decimali, non farò nulla.
  • ci sono più di tre posizioni decimali, troncerò a tre cifre decimali.

Posso specificare questo comportamento con la classe DecimalFormat?

risposta

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

Questo è davvero è una soluzione elegante! –

Problemi correlati