Parámetro doble con 2 dígitos después del punto en strings.xml?

Quiero tener un parámetro en una cadena en strings.xml y este parámetro debe ser un valor doble. Así que utilizo %1$f . Aquí – http://developer.android.com/reference/java/util/Formatter.html hay muchos ejemplos, pero ¿qué pasa si quiero tener unos cuantos parámetros double/float y sólo quiero que el segundo tenga 2 Dígitos después . ? Intenté usar combinaciones como %2$.2f o %2.2$f . Ni de ellos funcionó. %.1f no funciona tan bien. Entonces, ¿alguien sabe cómo puedo "personalizar" un valor float/double dentro de un strings.xml ? Gracias.

Si fuera yo, almacenaría los valores en los recursos como valores sencillos, y luego usaría métodos de formato para controlar cómo se muestran, más o menos así

 public String formatFigureTwoPlaces(float value) { DecimalFormat myFormatter = new DecimalFormat("##0.00"); return myFormatter.format(value); } public String formatFigureOnePlace(float value) { DecimalFormat myFormatter = new DecimalFormat("##0.0"); return myFormatter.format(value); } 

Sólo añadiendo a la respuesta de @David Airam aquí; La solución "incorrecta" que da es en realidad correcta, pero con un poco de ajustes. El archivo XML debe contener:

 <string name="resource1">Hello string: %1$s, and hello float: %2$.2f.</string> 

Ahora en el código Java:

 String svalue = "test"; float sfloat= 3.1415926; String sresult = getString(R.string.resource1, svalue, sfloat); 

La excepción que @David Airam informó es de intentar atascar una String en un especificador de formato con %f , lo que requiere un tipo de punto flotante. Utilice float y no hay tal excepción.

Además, puede usar Float.valueOf() para convertir una cadena en un flotante en caso de que los datos de entrada EditText originalmente una cadena (digamos, de un EditText o algo parecido). Sin embargo, siempre debe intentar / capturar operaciones de valueOf() y manejar el caso NumberFormatException , ya que esta excepción está desmarcada.

Ahora que esta respuesta está llegando demasiado tarde … pero espero ser capaz de ayudar a otras personas:

Android chupa con múltiples sustituciones de parámetros cuando se desean números decimales y formatear esto en estilo común% a.bf

La mejor solución que he encontrado (y sólo para este tipo de recursos) se pone los parámetros decimales como cadenas% n $ s y en el código aplique mi conversión con String.format (…)

Ejemplo:

MANERA INCORRECTA:

// En archivo xml:

 <string name="resource1">You has a desviation of %1$s and that is a %2$.2f%% percentage.</string> 

// Y en el archivo java

  String sresult = getString(R.string.resource1, svalue, spercentage); // <-- exception! 

Esta solución es técnicamente correcta pero incorrecta debido al sistema de recursos de sustitución de Android, por lo que la última línea generará una excepción.

CORREO / SOLUCIÓN:

Simplemente convierta el segundo parámetro en una cadena.

 <string name="resource1">You has a desviation of %1$s and that is a %2$s percentage.</string> 

Y ahora en el código:

 ... // This is the auxiliar line added to solve the problem String spercentage = String.format("%.2f%%",percentage); // This is the common code where we use the last variable. String sresult = getString(R.string.resource1, svalue, spercentage); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.