Pregunta

Estoy utilizando el siguiente patrón 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");
    }
};

Esto realiza las siguientes conversiones:

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

Ahora tiene un requisito adicional.

1.123  -> 1.123
1.1234 -> 1.123

Esto significa que cuando

  • hay menos de dos cifras decimales, lo haré "pad" con dos decimales.
  • hay exactamente dos o tres cifras decimales, no haré nada.
  • hay más de tres cifras decimales, voy a truncar con tres decimales.

¿Puedo especificar este comportamiento con la clase DecimalFormat?

¿Fue útil?

Solución

DecimalFormat("#,##0.00#")

Otros consejos

¿Usted ha intentado cambiar el RoundingMode de la instancia DecimalFormat?

Llamando setRoundingMode(RoundingMode.FLOOR) debe hacer el truco

Ver también setRoundingMode (java.math.RoundingMode)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top