round - redondear a dos decimales java
La mejor manera de dar formato a un valor doble en 2 lugares decimales (2)
Posible duplicado:
Redondea un doble a 2 cifras significativas después del punto decimal.
Estoy tratando con muchos valores dobles en mi aplicación, ¿hay alguna forma fácil de manejar el formato de los valores decimales en Java?
¿Hay alguna otra forma mejor de hacerlo que
DecimalFormat df = new DecimalFormat("#.##");
Lo que quiero hacer básicamente es formatear valores dobles como
23.59004 to 23.59
35.7 to 35.70
3.0 to 3.00
9 to 9.00
No, no hay mejor manera.
En realidad tienes un error en tu patrón. Lo que quieres es:
DecimalFormat df = new DecimalFormat("#.00");
Tenga en cuenta el "00"
, que significa exactamente dos decimales.
Si usa "#.##"
( #
significa dígito "opcional"), caerá ceros finales, es decir, new DecimalFormat("#.##").format(3.0d);
imprime solo "3"
, no "3.00"
.
Una alternativa es usar String.format
:
double[] arr = { 23.59004,
35.7,
3.0,
9
};
for ( double dub : arr ) {
System.out.println( String.format( "%.2f", dub ) );
}
salida:
23.59
35.70
3.00
9.00
También puede usar System.out.format
(la misma firma del método), o crear un java.util.Formatter
que funcione de la misma manera.