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?
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.
Essaye ça
String str="10,692,467,440,017.120".replaceAll(",","");
BigDecimal bd=new BigDecimal(str);
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.
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");