BigDecimal da NumberFormatException en Android 4.0.3 con localización
Estoy haciendo la localización en mi aplicación con persa (locale- "fa") y Pashto (locale- "ps") lenguajes. Cuando estoy tratando de convertir el doble valor en BigDecimal usando Decimal Foramt entonces da NumberFormatException en 4.0.3 con Lenguaje persa.
A continuación se muestra mi código para obtener dos decimales:
- Cómo obtener los idiomas disponibles (No todos, solo los idiomas disponibles en mi aplicación)
- LocationManager.removeUpdates (oyente) no quita el oyente de la ubicación
- Android Traduce al árabe
- Direcciones de manejo de la web móvil desde la ubicación actual
- Habilitar GPS programáticamente Android (sin navegar a los ajustes de ubicación)
public static String roundTwoDecimals(double d) { System.out.println("===================Amount in double "+d); DecimalFormat twoDForm = new DecimalFormat("#############.##"); String format=twoDForm.format(d); System.out.println("===================Amount after formatting "+format); return new BigDecimal(twoDForm.format(d)).toPlainString(); }
LogCat:
03-26 15:19:29.714: I/System.out(1475): ===================Amount in double 166308.37 03-26 15:19:29.723: I/System.out(1475): ===================Amount after formatting ۱۶۶۳۰۸٫۳۷
La cantidad real es 166308.37 y cuando cambio el idioma al persa ("fa") y lo formateo, da la cantidad como ۱۶۶۳۰۸٫۳۷
en 4.0.3. Por lo tanto, esta cadena no se puede convertir en BigDecimal
y proporciona NumberFormatException
.
Y el extraño problema es que excepto 4.0.3, funciona perfectamente bien.
- Eliminar localizaciones no utilizadas de APK
- Cómo localizar una aplicación de Android en idioma indonesio
- Notificación si el usuario está cerca de la ubicación
- Contactos de Android: Colocación / clasificación local incorrecta
- Map.setmylocationenabled (true) no funciona
- Google.Play interfaz web hl parámetro para el idioma árabe
- Lint: ¿Cómo ignorar los errores "<key> no se traduce en <language>"?
- ¿Cómo puedo poner un parámetro en una cadena localizada en Android?
Prueba este código ..
public static String roundTwoDecimals(double d) { NumberFormat nf=NumberFormat.getCurrencyInstance(Locale.ENGLISH); DecimalFormat df = (DecimalFormat)nf; df.applyPattern("#############.##"); String output = df.format(d); return new BigDecimal(output).toPlainString(); }
- Instalar la imagen antigua del sistema con las herramientas de Android R21
- ¿No puede utilizar un método estático público?