Comment puis-je parsingr une chaîne en BigDecimal?

J’ai cette chaîne: 10 692 467 4404017 (il s’agit d’un montant).

Je veux l’parsingr en BigDecimal. Le problème est que j’ai essayé les deux DecimalFormat et NumbeFormat en vain. De l’aide?

Essaye ça

// Create a DecimalFormat that fits your requirements DecimalFormatSymbols symbols = new DecimalFormatSymbols(); symbols.setGroupingSeparator(','); symbols.setDecimalSeparator('.'); Ssortingng pattern = "#,##0.0#"; DecimalFormat decimalFormat = new DecimalFormat(pattern, symbols); decimalFormat.setParseBigDecimal(true); // parse the ssortingng BigDecimal bigDecimal = (BigDecimal) decimalFormat.parse("10,692,467,440,017.120"); System.out.println(bigDecimal); 

Si vous créez une application avec le support I18N, vous devez utiliser DecimalFormatSymbols(Locale)

N’oubliez pas que decimalFormat.parse peut lancer une ParseException , vous devez donc la gérer (avec try / catch) ou la lancer et laisser une autre partie de votre programme la gérer.

Essaye ça

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

BigDecimal propose un constructeur de chaînes. Vous devrez Ssortingng filteredSsortingng=inSsortingng.replaceAll(",","") toutes les virgules du nombre, via une regex ou Ssortingng filteredSsortingng=inSsortingng.replaceAll(",","") .

Vous appelez ensuite simplement BigDecimal myBigD=new BigDecimal(filteredSsortingng);

Vous pouvez également créer un NumberFormat et appeler setParseBigDecimal(true) . Puis parse( vous donnera un BigDecimal sans vous soucier du formatage manuel.

Essayez le constructeur correct http://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html#BigDecimal(java.lang.Ssortingng)

Vous pouvez directement instancier le BigDecimal avec la chaîne;)

Exemple:

 BigDecimal bigDecimalValue= new BigDecimal("0.5");