¿Cómo puedo cambiar el comportamiento DecimalFormat dependiendo de la duración de entrada?
-
09-10-2019 - |
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
?
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