truncar round redondear numeros limitar float decimales con java double number-formatting

round - Java: doble: cómo SIEMPRE mostrar dos dígitos decimales



redondear decimales en java netbeans (6)

DecimalFormat es la opción más fácil de usar:

double roundTwoDecimals(double d) { DecimalFormat twoDecimals = new DecimalFormat("#.##"); return Double.valueOf(twoDecimals.format(d)); }

Espero que esto resuelva tu problema...

Utilizo valores dobles en mi proyecto y me gustaría mostrar siempre los dos primeros dígitos decimales, incluso si son ceros. Utilizo esta función para redondear y si el valor que imprimo es 3.47233322 (correctamente) imprime 3.47. Pero cuando imprimo, por ejemplo, el valor 2 imprime 2.0.

public static double round(double d) { BigDecimal bd = new BigDecimal(d); bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP); return bd.doubleValue(); }

¡Quiero imprimir 2.00!

¿Hay una manera de hacer esto sin usar cadenas?

¡Gracias!

EDIT: de sus respuestas (por lo cual le agradezco) Entiendo que no fui claro al decir lo que estoy buscando (y lo siento por esto): Sé cómo imprimir dos dígitos después del número usando las soluciones que propuesto ... lo que quiero es almacenar en el valor doble directamente los dos dígitos! De modo que cuando hago algo como esto System.out.println("" + d) (donde d es mi doble con valor 2) imprime 2.00.

Estoy empezando a pensar que no hay manera de hacer esto ... ¿verdad? Gracias de nuevo, de todas formas, por sus respuestas. ¡Déjeme saber si sabe una solución!


Puedes usar algo como esto:

double d = 1.234567; DecimalFormat df = new DecimalFormat("#.00"); System.out.print(df.format(d));

Editado para responder realmente la pregunta porque necesitaba la respuesta real y esto apareció en Google y alguien la marcó como la respuesta a pesar de que esto no iba a funcionar cuando los decimales eran 0.


Simplemente puede hacer esto:

double d = yourDoubleValue; String formattedData = String.format("%.02f", d);


Utilice el java.text.NumberFormat para esto:

NumberFormat nf= NumberFormat.getInstance(); nf.setMaximumFractionDigits(2); nf.setMinimumFractionDigits(2); nf.setRoundingMode(RoundingMode.HALF_UP); System.out.print(nf.format(decimalNumber));


Puedes usar algo como esto :

Si desea conservar 0 también en la respuesta: luego use (0.00) en el formato Cadena

double d = 2.46327; DecimalFormat df = new DecimalFormat("0.00"); System.out.print(df.format(d));

La salida: 2.46

double d = 0.0001; DecimalFormat df = new DecimalFormat("0.00"); System.out.print(df.format(d));

La salida: 0.00

Sin embargo, si usa DecimalFormat df = new DecimalFormat ("0. ##");

double d = 2.46327; DecimalFormat df = new DecimalFormat("0.##"); System.out.print(df.format(d));

La salida: 2.46

double d = 0.0001; DecimalFormat df = new DecimalFormat("0.##"); System.out.print(df.format(d));

La salida: 0


java.text.DecimalFormat df = new java.text.DecimalFormat("###,###.##"); df.setMaximumFractionDigits(2); df.setMinimumFractionDigits(2);