BigDecimal(nbreàDécimales_String) accepte ',' plutôt que '.' comme séparateur des décimales.
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,
Code:
BigDecimal bd = new BigDecimal(0,0f);
génère une erreur NumberFormatException. Cette erreur n'apparaît plus s'il y a un '.' au lieu d'une ','.
Mais les valeurs sont passées plutôt sous forme de chaîne de caractères. La première expression de
Code:
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);
} |
génère aussi 'NumberFormatException' lorsque le champs comporte un nombre à décimales, par exemple "87,65". Pas d'erreur si p.ex. "41".
J'effectue à présent un essai avec :
Code:
1 2
| NumberFormat foNbre = NumberFormat.getNumberInstance(Locale.GERMAN);
DecimalFormat foDéc = (DecimalFormat)foNbre; |
mais ça bloque.
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..