2012-03-02 15 views
8

hola yo estoy tratando de imprimir después de dividir en constructor de cadena y la impresión de que el generador de cadenas me dejó mostrarle mi código,Cómo imprimir hasta dos lugares decimales en Java usando el generador de cadenas?

string.append("Memomry usage:total:"+totalMemory/1024/1024+ 
"Mb-used:"+usageMemory/1024/1024+ 
" Mb("+Percentage+"%)-free:"+freeMemory/1024/1024+ 
" Mb("+Percentagefree+"%)"); 

en el código de "totalMemory" y "FreeMemory" es de tipo doble tiene un valor de bytes en el punto no nulo así que lo divido por "1024" dos veces para obtenerlo en "Mb" y "cadena" es variable del generador de cadenas después de usar este código. Simplemente lo estoy imprimiendo como resultado, como se muestra a continuación,

Used Memory:Memomry usage: 
total:13.3125Mb-used:0.22920989990234375Mb (0.017217645063086855%) 
-free:13.083290100097656Mb (0.9827823549369131%) 

quiero obtener el porcentaje en dos lugares y valores de memoria usada y libre en mb como este "usado: 2345.25" en este modelo n recordar

esperanzas para sus sugerencias

Gracias de antemano

+0

¿Por qué 'using StringBuilder'? Es la tecnología incorrecta para este problema. Vea las respuestas ... – EJP

Respuesta

12

¿Qué tal String.format()?

System.out.println(String.format("output: %.2f", 123.456)); 

Salida:

output: 123.46 
2

Trate como esto

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

Usando DecimalFormat, podemos formatear la manera que queríamos ver.

+0

Vea también esta respuesta SO http://stackoverflow.com/a/5710406/713414 – Jayy

1

Puede usar DecimalFormat para imprimir con dos decimales. Por lo tanto, para imprimir x = 2345.2512 con dos cifras decimales, podría escribir

NumberFormat f = new DecimalFormat("#.00"); 
System.out.println(f.format(x)); 

que imprimirá 2.345,25.

1

Aunque es posible utilizar NumberFormat y es DecimalFormat subclase para este problema, estas clases proporcionan una gran cantidad de funcionalidad que no pueda ser requerida para su aplicación.

Si el objetivo es simplemente una buena impresión, recomendaría usar la función de formato de la clase String. Para su código específico que se vería así:

string.append(String.format("Memomry usage:total:%1.2f Mb-used:%1.2f Mb(%1.2f %%)-free:%1.2f Mb(%1.2f %%)",totalMemory/1024/1024,usageMemory/1024/1024,Percentage,freeMemory/1024/1024,Percentagefree)); 

Si tiene la intención de especificar un formato estándar en el que todos los números se representan, independientemente de si están siendo analizados a partir de cadenas o formateados para cuerdas, entonces recomendaría utilizando singletons de las * clases de formato. Le permiten usar formatos estándar y también pasar descripciones de formato entre métodos.

Espero que lo ayude a seleccionar el método correcto para usar en su aplicación.

Cuestiones relacionadas