java - parsear - talend bigdecimal
¿Cómo puedo analizar un String a BigDecimal? (4)
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.
Esta pregunta ya tiene una respuesta aquí:
- Safe String to BigDecimal conversion 9 respuestas
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 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");
Prueba esto
String str="10,692,467,440,017.120".replaceAll(",","");
BigDecimal bd=new BigDecimal(str);
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 programa la maneje