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#")