Bonjour,
Mon programme doit lire les données d'un fichier .csv, lequel contient des caractères constituées de nombres décimaux, au format "41" ou "87,50".
Le séparateur de décimale est donc une virgule et non un point et celui-ci n'est pas toujours présent. Il n'y a pas d'intérêt ici pour un "séparateur de groupe", pour les milliers, les millions, les milliards ...
Dans ma méthode de transformation des valeurs en champ de mesures (nombres à décimales) vers BigDecimal,génère une erreur NumberFormatException. Cette erreur n'apparaît plus s'il y a un '.' au lieu d'une ','.
Code : Sélectionner tout - Visualiser dans une fenêtre à part BigDecimal bd = new BigDecimal(0,0f);
Mais les valeurs sont passées plutôt sous forme de chaîne de caractères. La première expression degénère aussi 'NumberFormatException' lorsque le champs comporte un nombre à décimales, par exemple "87,65". Pas d'erreur si p.ex. "41".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 try { bd = new BigDecimal(champDeLigneCsv[1]); bd.setScale(1, BigDecimal.ROUND_DOWN).toString(); } catch (NumberFormatException ex) { bd = null; } finally { mesPuiss.setMesPuissHPl(bd); }
J'effectue à présent un essai avec :mais ça bloque.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 NumberFormat foNbre = NumberFormat.getNumberInstance(Locale.GERMAN); DecimalFormat foDéc = (DecimalFormat)foNbre;
Ou bien devrais-je plutôt étudier la solution basée sur la classe 'DecimalFormatSymbols' ? A première vue pas car il ne s'agit pas de changer les symboles apparaissant dans les nombres formatés qui sont produits par une méthode 'format()'.
Directions à essayer mais sans garantie d'aboutir : Problem while converting String to Bigdecimal
Que faut-il programmer pour que des chaînes de caractères correspondant à de simples nombres à décimales, le séparateur de décimales ',' soit substitué au '.' ?
Merci d'avance pour votre aide..
Partager