Formato de moneda en Android utilizando separador decimal incorrecto
Conseguí un informe del insecto de un usuario sueco que decía que nuestra moneda sueca utilizaba el separador decimal incorrecto.
NumberFormat enUS = NumberFormat.getCurrencyInstance(Locale.US); NumberFormat enGB = NumberFormat.getCurrencyInstance(Locale.UK); NumberFormat svSE = NumberFormat.getCurrencyInstance(new Locale("sv", "SE")); double cost = 1020d; String fmt = "en_US: %s en_GB %s sv_SE %s"; String text = String.format(fmt, enUS.format(cost), enGB.format(cost), svSE.format(cost)); Log.e("Format", text); > Format﹕ en_US: $1,020.00 en_GB £1,020.00 sv_SE 1 020:00 kr
Dicen que el formato debe ser "1 020,00 kr". Cuando examino el objeto de formato, parece que tiene decimalSeparator de "," en la tabla de símbolos, pero un "monetarySeparator" de ":".
- Cómo quitar el campo SECONDS de un DateFormat
- Adición de cotizaciones en Java
- ¿Cómo evitar la dirección automática de texto de derecha a izquierda para el hebreo y el árabe?
- ¿Por qué podría Resources.getString () devolver intermitentemente cadenas de la configuración regional equivocada?
- ¿Es posible localizar CalendarView o DatePicker?
¿Alguien sabe si: es realmente correcto, si se trata de un error en Android / java, o cualquier tipo de solución?
- Aplicación de Android con ActionBar NullPointerException con configuración regional no predeterminada
- Cocos2d-x localización simplificado / chino tradicional
- Android: elegir entre dos idiomas sin "locale"
- Mostrar fecha en la ubicación actual
- Haciendo clic en un botón para cambiar el idioma
- Localización de Android y menú
- CyanogenMod: traducir un proyecto
- ¿De dónde viene la ubicación y la ubicación actual de Bestest? En Android Dev Guide (Obtención de la ubicación del usuario)
Es como dice su usuario: En el separador de miles de sueco es el espacio en blanco y el separador decimal es la coma "," y el símbolo de moneda "kr" (Krona). Así que el colon ":" está definitivamente mal.
Usted puede comprobarlo aquí también: http://www.localeplanet.com/java/sv-SE/
¿Qué versión de Java está utilizando? Funciona bien en mi escritorio 1.6.0_13
– actualización –
Parece que en Android hay un error, pero se puede evitar el error usando el DecimalFormatSymbols como este:
DecimalFormat svSE = new DecimalFormat("#,###.00"); DecimalFormatSymbols symbols = new DecimalFormatSymbols(new Locale("sv", "SE")); symbols.setDecimalSeparator(','); symbols.setGroupingSeparator(' '); svSE.setDecimalFormatSymbols(symbols);
Esto imprime los separadores correctos en Android también.
- Cómo cambiar los colores de la forma en Drawable?
- Visualización preliminar en el grabador de medios android