String.format utiliza coma en lugar de punto
Mi aplicación está trabajando en muchos dispositivos sin problemas hasta ahora. Pero ahora tengo mi nueva Galaxy Tab con Android 3.2 donde se bloquea todo el tiempo. Descubrí que el problema era un flotador en un EditText. Estoy utilizando myEditText.setText(String.format("%.1f", fMyFloat));
Para poner el flotador en el EditText. Pero de alguna manera el flotador en mi Tab 3.2 Galaxy se genera con una coma en lugar de un punto. Cuando leo el EditText de nuevo la aplicación se bloquea por supuesto, diciéndome que esto no es válido flotar debido a la coma …
¿Qué está pasando mal aquí?
- DrawableRight de EditText
- Editado Android enfoque automático
- Cómo cambiar / cambiar el tamaño de EditText en el diseño de la tabla?
- Android ScaleAnimation no escala el área seleccionable
- EditText específico de Android
- Etiqueta EditarTexto?
- EditText: Diferenciar entre cambio de texto por setText () o por entrada de teclado
- Ajuste EditText al tamaño de fuente
- Cómo manejar evento onClick en imageSpan en editText?
- EditText pierde sus bordes después de un fallo en la sumisión
- Manejar la tecla Enter en EditText a través de diferentes dispositivos
- La placa de teclado mueve toda la disposición hacia arriba
- Cambiar el color del texto cuando el usuario marca las etiquetas hash
Convertir flotante en cadena ..
De la documentación de String.format
:
String.format (formato de cadena, objeto … args)
Devuelve una cadena formateada localizada, utilizando el formato y argumentos suministrados, utilizando la configuración regional predeterminada del usuario.
El texto citado anterior significa que la salida de String.format
coincidirá con la configuración predeterminada que el usuario utiliza.
Como ejemplo, una coma se usaría como el delimitador de punto decimal si es un usuario que usa localidad sueca, pero un punto si está usando un americano.
Si desea forzar lo que se va a utilizar la configuración regional, utilice la sobrecarga de String.format
que acepta tres parámetros:
- String.format (entorno local, formato de cadena, objeto … args)
Convertir cadena a flotar ..
Parsing una cadena arbitraria en un flotador usando la configuración regional predeterminada es bastante fácil, todo lo que necesita hacer es utilizar DecimalFormat.parse
.
A continuación, utilice .parse
para obtener un Number
y llamar a floatValue
en este objeto devuelto.
String.format
utiliza la configuración regional en la que se encuentra. Debería hacer algo como esto si desea un punto:
NumberFormat formatter = NumberFormat.getInstance(Locale.US); myEditText.setText(formatter.format(fMyFloat);
Echa un vistazo a NumberFormat
para más opciones de formato
Su llamada de format
en su Galaxy Tab utiliza algún idioma Locale
predeterminado que a su vez utiliza ,
para los flotadores. Puede usar la String.format(Locale,String,...)
con la configuración regional específica para que las cosas funcionen.
O deberías haber usado el mismo escenario para analizar y formatear el número. Así que probablemente debería ir con NumberFormat
para formatear y analizar sus flotadores.
Utilice debajo del código que funciona para mí:
NumberFormat nf = NumberFormat.getNumberInstance(Locale.US); DecimalFormat df = (DecimalFormat)nf; df.applyPattern(pattern); String output = df.format(value); System.out.println(pattern + " " + output + " " + loc.toString());
- Cómo explorar el estilo en android
- Establecer un margen entre dos botones de forma programática desde una imagen lineal