¿Hay alguna manera fácil de volver a leer si el conjunto de idiomas usa una coma decimal o un punto decimal?Punto decimal o coma decimal en Android
Respuesta
Creo que tengo una manera. Nunca he utilizado esto, eso sí, pero sin duda debería conseguir cerrar, si no existe:
NumberFormat nf = NumberFormat.getInstance();
if (nf instanceof DecimalFormat) {
DecimalFormatSymbols sym = ((DecimalFormat) nf).getDecimalFormatSymbols();
char decSeparator = sym.getDecimalSeparator();
}
Docs:
NumberFormat
, DecimalFormat
, DecimalFormatSymbols
De acuerdo con los documentos DecimalFormat, Aparentemente llamar a NumberFormat.getInstance() es seguro, pero puede devolver una subclase que no sea DecimalFormat (la otra opción que veo es ChoiceFormat). Creo que para la mayoría de las instancias debería ser un DecimalFormat, y luego puedes comparar decSeparator
con un ,
y .
para ver qué formato está usando.
No estoy seguro de si hay una manera fácil, pero podría probar qué conjunto de idiomas se está utilizando y luego hacer los cambios apropiados según si ese idioma utilizó comas o decimales.
separador de idioma y decimal son dos problemas diferentes. Además, es poco probable que enumere todo el idioma existente. – Loda
Yo probé esto y funcionó bien ...
String osVersion = System.getProperty("os.version");
String PhoneModel = android.os.Build.MODEL;
String locale = this.getResources().getConfiguration().locale.getDisplayCountry();
char decSeparator = '*';
DecimalFormatSymbols dfs = new DecimalFormatSymbols();
decSeparator = dfs.getDecimalSeparator();
String androidVersion = android.os.Build.VERSION.RELEASE;
String prologue = String.format("OS verson = %s PhoneModel = %s locale = %s DecimalFormatSymbol = [%c] androidVersion = %s ",
osVersion ,PhoneModel, locale, decSeparator,androidVersion);
que puede utilizar:
Currency currency = Currency.getInstance(device_locale);
de utilizar currency.getSymbol()
para el símbolo. Para la configuración regional predeterminada del dispositivo puede usar:
@TargetApi(Build.VERSION_CODES.N)
public static Locale getCurrentLocale(Context c) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
return c.getResources().getConfiguration().getLocales().get(0);
} else {
//noinspection deprecation
return c.getResources().getConfiguration().locale;
}
}
- 1. TextBox no respeta el decimal del sistema (punto o coma)
- 2. jqGrid: Formato de número con coma como punto decimal
- 3. Convert con punto o una coma como separador decimal a número en JavaScript
- 4. ceros NSDecimalNumber siguientes punto decimal (iPhone SDK)
- 5. ¿Cómo cambio mi flotador en un número decimal doble con una coma como separador de punto decimal en python?
- 6. separador decimal en NumberFormat
- 7. ¿Cómo puedo permitir punto y coma como separadores de punto decimal válidos para flotadores?
- 8. Flotantes alineados verticales en el punto decimal
- 9. limitación dígito desde el punto decimal en C++
- 10. Cómo representar 0.1 en punto flotante Aritmética y decimal
- 11. punto de Fuerza ("") como separador decimal en java
- 12. C# decimal separator?
- 13. Cómo cambiar el símbolo del punto decimal en double.ToString()?
- 14. Diferencia entre decimal y decimal
- 15. Precisión del doble después del punto decimal
- 16. LISP - dígitos después del punto decimal
- 17. cálculo de flotador php 2 punto decimal
- 18. para comparar el doble y el decimal ¿Debería convertir doble a decimal o decimal a doble?
- 19. Cómo recortar ceros después del punto decimal
- 20. Número decimal con coma en lugar de punto (php y sql)
- 21. Número entero o número decimal
- 22. Analizar decimal en vista del modelo
- 23. Int a conversión decimal - Insertar punto decimal en la ubicación especificada
- 24. Convertir un número con una coma como punto decimal para flotar
- 25. Cambiar el separador decimal en MySQL
- 26. ¿Lanzar objeto a decimal? (Decimal anulable)
- 27. ¿Cómo puedo convertir el decimal? a decimal
- 28. Imprimir variables en formato hexadecimal o decimal
- 29. Agregue el separador de coma mil a decimal (.net)
- 30. Mostrar solamente el punto decimal si el componente de punto flotante no es .00 sprintf/printf
Gracias esto funciona genial – patrick
Necesitaba convertir 'nf' a' DecimalFormat' '((DecimalFormat) nf) .getDecimalFormatSymbols()', muchas gracias. –
¡Gracias @ SelçukCihan, he editado la respuesta para incluir el elenco requerido! – kcoppock