Como posso alterar o comportamento DecimalFormat com base no comprimento da entrada?

Eu estou usando o seguinteDecimalFormat padronizar:

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

Isso realiza as seguintes conversões:

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

Agora tenho um requisito adicional.

1.123  -> 1.123
1.1234 -> 1.123

Isso significa que quando

houver menos de duas casas decimais, eu "preencherei" duas casas decimais.existem exatamente duas ou três casas decimais, não farei nada.Se houver mais de três casas decimais, truncarei para três casas decimais.

Posso especificar esse comportamento com oDecimalFormat classe?

questionAnswers(2)

yourAnswerToTheQuestion