2009-01-11 27 views
48

necesito para dar formato a un valor decimal a una cadena en la que siempre se muestran en el arriendo 2 decimales y como máximo 4.java formato decimal cadena

así por ejemplo

"34.49596" would be "34.4959" 
"49.3" would be "49.30" 

se puede hacer esto mediante el String.format comando? ¿O hay una manera más fácil/mejor de hacer esto en Java?

Respuesta

64

Desea java.text.DecimalFormat.

DecimalFormat df = new DecimalFormat("0.00##"); 
String result = df.format(34.4959); 
+2

seguir el mismo ejemplo obtendrá un resultado erróneo. Necesita usar RoundingMode.DOWN para este ejemplo en particular. De lo contrario, usa HALF_EVEN. No, negativo, sin embargo. –

1

¿Quieres java.text.DecimalFormat

3

java.text.NumberFormat es probablemente lo que quiere.

37

Aquí es un pequeño fragmento de código que hace el trabajo:

double a = 34.51234; 

NumberFormat df = DecimalFormat.getInstance(); 
df.setMinimumFractionDigits(2); 
df.setMaximumFractionDigits(4); 
df.setRoundingMode(RoundingMode.DOWN); 

System.out.println(df.format(a)); 
+0

Sin negativos, pero su código falla para el primer ejemplo, proporcionado por el póster original. Necesito usar RoundingMode.DOWN, de lo contrario, usar HALF_EVEN por defecto, supongo. –

+0

Gracias por la corrección Adeel –

1

NumberFormat y DecimalFormat son definitivamente lo que quiere. Además, tenga en cuenta el método NumberFormat.setRoundingMode(). Puede usarlo para controlar cómo se aplica el redondeo o el truncamiento durante el formateo.

113

Sí, puede hacerlo con String.format:

String result = String.format("%.2f", 10.0/3.0); 
// result: "3.33" 

result = String.format("%.3f", 2.5); 
// result: "2.500" 
+8

Esta puede no ser la respuesta correcta a la pregunta, pero es la respuesta que vine a encontrar. ¡Gracias! – milosmns

+0

Estaba buscando "% .2f", me ayudó –

Cuestiones relacionadas