Tengo este String: 10,692,467,440,017.120 (es una cantidad).
Quiero analizarlo en un BigDecimal. El problema es que he probado tanto DecimalFormat como NumbeFormat en vano. ¿Alguna ayuda?
Prueba esto
// Create a DecimalFormat that fits your requirements DecimalFormatSymbols symbols = new DecimalFormatSymbols(); symbols.setGroupingSeparator(','); symbols.setDecimalSeparator('.'); String pattern = "#,##0.0#"; DecimalFormat decimalFormat = new DecimalFormat(pattern, symbols); decimalFormat.setParseBigDecimal(true); // parse the string BigDecimal bigDecimal = (BigDecimal) decimalFormat.parse("10,692,467,440,017.120"); System.out.println(bigDecimal);
Si está creando una aplicación con soporte I18N, debe usar DecimalFormatSymbols(Locale)
También tenga en cuenta que decimalFormat.parse
puede lanzar una ParseException
por lo que debe manejarla (con try / catch) o lanzarla y dejar que otra parte de su progtwig la maneje
Prueba esto
String str="10,692,467,440,017.120".replaceAll(",",""); BigDecimal bd=new BigDecimal(str);
BigDecimal ofrece un constructor de cadenas. Tendrá que quitar todas las comas del número, mediante una expresión regular o String filteredString=inString.replaceAll(",","")
.
Entonces simplemente llama a BigDecimal myBigD=new BigDecimal(filteredString);
También puede crear un NumberFormat
y llamar a setParseBigDecimal(true)
. Luego parse(
le dará un BigDecimal sin preocuparse por el formateo manual.
Prueba el constructor correcto http://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html#BigDecimal(java.lang.String)
Puede instanciar directamente el BigDecimal con la cadena;)
Ejemplo:
BigDecimal bigDecimalValue= new BigDecimal("0.5");