Locale et conversion String vers Double sur DecimalFormat
Salut à tous...
Je galère (et c'est un petit mot) sur une IHM.
En fait j'ai une fenetre avec des valeurs récupérées dans une BDD que j'affiche dans des jTextFields.
Pour l'affichage, j'utilise un DecimalFormat comme suit :
Code:
1 2 3 4 5 6 7
|
public static final String roundDouble(double d) {
DecimalFormatSymbols dfs = new DecimalFormatSymbols(Locale.FRANCE);
dfs.setGroupingSeparator(' ');
DecimalFormat df = new DecimalFormat("#,##0.00", dfs);
return df.format(d).replace(',','.') ;
} |
L'ensemble de ces données sont modifiables manuellement et par conséquent j'ai une fonction de rafraichissement des variables qui doit récupérer les valeurs (String) des JTextFields pour ensuite les convertir en double. J'utilise alors 2 fonctions :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
public static final Double getDouble(String s)
{
s = s.replace('.',',') ;
NumberFormat nombre = NumberFormat.getCurrencyInstance(Locale.FRANCE);
try
{
return (parseFull(nombre,s)).doubleValue() ;
}
catch(Exception e)
{
System.out.println(e.toString());
}
return 0. ;
}
public static Number parseFull(NumberFormat nf, String source) throws ParseException
{
ParsePosition parsePosition = new ParsePosition(0);
Number number = nf.parse(source, parsePosition);
// On vérifie qu'il n'y ai pas d'erreur :
if (parsePosition.getErrorIndex() >= 0) {
throw new ParseException("Unparseable number: \"" + source + "\"",
parsePosition.getErrorIndex());
}
// On vérifie que toute la chaine a bien été parsé :
if (parsePosition.getIndex() != source.length()) {
throw new ParseException("Unparseable number: \"" + source + "\"",
parsePosition.getIndex());
}
return number;
} |
et Voici l'appel de la fonction getDouble()
Code:
1 2
|
this.capital = getDouble(jTextField1.getText().replace(' ', '\u00a0')); |
Mon problème est que ca me lève sans cesse un
Code:
java.text.ParseException: Unparseable number: "0,00"
Comment faire alors pcq je sèche d'un point de vue idée...
Merci pour votre aide !