truncar round redondear limitar float decimales con java

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.