Come posso analizzare una stringa su BigDecimal?

Ho questa stringa: 10,692,467,440,017,120 (è un importo).

Voglio analizzarlo su un BigDecimal. Il problema è che ho provato sia DecimalFormat che NumbeFormat invano. Qualsiasi aiuto?

Prova questo

// 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); 

Se stai costruendo un’applicazione con supporto I18N dovresti usare DecimalFormatSymbols(Locale)

Tieni anche presente che decimalFormat.parse può lanciare una ParseException quindi devi gestirlo (con try / catch) o lanciarlo e lasciare che un’altra parte del tuo programma lo gestisca

Prova questo

  String str="10,692,467,440,017.120".replaceAll(",",""); BigDecimal bd=new BigDecimal(str); 

BigDecimal offre un costruttore di stringhe. Dovrai eliminare tutte le virgole dal numero, tramite regex o String filteredString=inString.replaceAll(",","") .

Quindi chiami semplicemente BigDecimal myBigD=new BigDecimal(filteredString);

È inoltre ansible creare un NumberFormat e chiamare setParseBigDecimal(true) . Quindi parse( ti darà un BigDecimal senza preoccuparti della formattazione manuale.

Prova il costruttore corretto http://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html#BigDecimal(java.lang.String)

Puoi instanciare direttamente BigDecimal con la String;)

Esempio:

 BigDecimal bigDecimalValue= new BigDecimal("0.5");