web-dev-qa-db-fra.com

Comment analyser une chaîne dans BigDecimal?

J'ai cette chaîne: 10.692.467.440.017.120 (c'est un montant).

Je veux analyser un BigDecimal. Le problème est que j'ai essayé à la fois DecimalFormat et NumbeFormat en vain. De l'aide?

55
BenMansourNizar

Essaye ça

// 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 vous construisez une application avec le support I18N, vous devez utiliser DecimalFormatSymbols(Locale)

Gardez également à l'esprit que decimalFormat.parse peut lancer une ParseException, vous devez donc le manipuler (avec try/catch) ou le lancer et laisser une autre partie de votre programme le gérer.

66
René Link

Essaye ça

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

BigDecimal propose un constructeur de chaîne. Vous devrez supprimer toutes les virgules du numéro, via une expression régulière ou String filteredString=inString.replaceAll(",","").

Vous appelez alors simplement BigDecimal myBigD=new BigDecimal(filteredString);

Vous pouvez également créer un NumberFormat et appeler setParseBigDecimal(true). Ensuite, parse( vous donnera un BigDecimal sans vous soucier de la mise en forme manuelle.

13
Andrey Akhmetov

Essayez le constructeur correct http://docs.Oracle.com/javase/7/docs/api/Java/math/BigDecimal.html#BigDecimal (Java.lang.String)

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

Exemple:

BigDecimal bigDecimalValue= new BigDecimal("0.5");
13
Rene M.