Conversion String->Double avec Split

bikini42 Messages postés 41 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 11 juin 2010 - 22 mai 2007 à 16:41
bikini42 Messages postés 41 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 11 juin 2010 - 22 mai 2007 à 18:31
Bonjour à tous!

Je vous écris car j'ai un petit souci de conversion de String en Double de données provenant d'un fichier *.CSV....Malgré toutes les indications que j'ai pu trouver sur ce forum ou sur d'autres, elles ne fonctionnent pas et je n'arrive pas à convertir mes String en Double.

Voici le code que j'ai :

while

((line = sr.ReadLine()) !=
null){

         string[] split =
null;         split = line.Split(

';');          data[k].Infos = split[0];  // Fonctionne très bien

         data[k].NomImage = split[1];  // Fonctionne très bien

         data[k].TempsCible =

double.Parse(split[2]);  // Refus de conversion (FormatException)
         k++;

}

J'ai essayé de rajouter des arguments à ma fonction Parse (AllowDecimal par exemple) mais cela ne change rien.

Pire, en rentrant un nombre manuellement, du style double.Parse("3,23255") ou double.Parse("3.23255") cela me met la même erreur. J'en déduis que cela ne viens donc pas de mon split[].

Si quelqu'un sait comment m'aider, je le remercie d'avance.

Bonne fin de journée à tous!
A voir également:

6 réponses

cs__Syl_ Messages postés 66 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 25 février 2008 2
22 mai 2007 à 17:02
Bonjour,

Essaie ceci
data[k].TempsCible = Convert.ToDouble(split[2]);

ou même
data[k].TempsCible = Convert.ToDouble(split[2].ToString());
pour être sûr.

Bonne journée

_Syl_
0
cs__Syl_ Messages postés 66 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 25 février 2008 2
22 mai 2007 à 17:03
Bien évidemment 'TempsCible' a été déclaré en tant que double ?
0
bikini42 Messages postés 41 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 11 juin 2010
22 mai 2007 à 17:37
Merci d'avoir répondu si vite _Syl_ ;)

Pour répondre àta question : oui, TempsCible est bien déclaré en double.

Sinon, je viens d'essayer tes 2 propositions:
- Cela fonctionne pour les nombres rentrés manuellement (par exemple "3,0265)
- Mais je continue d'avoir FormatException pour les données recueillies par split[2]..... :'(

Pourtant, mon fichier csv, quand je l'ouvre sous Excel pour vérifier, contient bien des nombres du style 1474,365....

Je ne comprend pas...

Merci quand même..
<col style=\"width: 60pt;\" width=\"80\" /><col />----
1474,43499
0
Morning12 Messages postés 1 Date d'inscription dimanche 11 février 2007 Statut Membre Dernière intervention 22 mai 2007
22 mai 2007 à 18:04
Tu peux peut être essayer ça :






taVariable = Double






.Parse(split[2].ToString()
,

new

System.Globalization.

CultureInfo

(

"fr-FR"





));

La culture "fr-FR" spécifie que la virgule s'ecrit avec une ","
Pour avoir un "." à la place tu dois remplacer par en-US
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bikini42 Messages postés 41 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 11 juin 2010
22 mai 2007 à 18:24
Merci Morning12,

Je viens d'essayer les 2 versions (fr et us) et aucune des 2 ne résoud mon problème...

Je suis désolé... : ( mais c'est sympa ;)
0
bikini42 Messages postés 41 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 11 juin 2010
22 mai 2007 à 18:31
Oula je viens de trouver!!!

Je m'excuse auprès de vous tous!!!

Le souci venait du fait que mon fichier csv contenait une entête et donc la 1ère ligne était composée de mots, donc impossibilité de convertir en nombre même avec toute la volonté du monde lol!!!

En tout cas, merci quand même à ceux qui ont essayé de m'aider, c'est très très sympa!!

Encore mille excuses!
0
Rejoignez-nous