truncar redondear quitar limitar decimales java format decimal number-formatting decimalformat

java - redondear - ¿Cómo puedo cambiar el comportamiento de DecimalFormat en función de la longitud de entrada?



redondear a dos decimales java (2)

¿Has intentado cambiar el RoundingMode de tu instancia de DecimalFormat ?

Llamar a setRoundingMode(RoundingMode.FLOOR) debería ser el truco

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

Estoy usando 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 tengo un requerimiento adicional.

1.123 -> 1.123 1.1234 -> 1.123

Eso significa que cuando

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

¿Puedo especificar este comportamiento con la clase DecimalFormat ?


DecimalFormat("#,##0.00#")