Caste

[Résolu]
Signaler
Messages postés
43
Date d'inscription
lundi 14 février 2005
Statut
Membre
Dernière intervention
30 janvier 2006
-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
bonjour,

Je voudrais caster un string en float. j'ai essayé avec :

float mon_float =
float.Parse(str, System.Globalization.NumberStyles.Float);

double mon_double = System.Convert.ToDouble(str);

mais cela ne marche que si je rentre un nombre du type "2,4" or mysql n'accepte que la forma "2.4" pour les float!!!

comment puis je faire??

merci d'avance!

5 réponses

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
C'est un probleme de culture.


<HR>
CultureInfo ci =
new
CultureInfo(
"fr-FR",
true);
ci.NumberFormat.NumberDecimalSeparator =
".";
System.Threading.
Thread.CurrentThread.CurrentCulture = ci;

double b =
double.Parse(
"10.0"); // La ca marche

<HR>

A noter que si un de tes utilisateurs rentre une valeur avec une virgule, il faudra que tu geres le probleme, a savoir remplacer la virgule par un point avec un tonString = tonString.Replace(',', '.');

Mx
Messages postés
43
Date d'inscription
lundi 14 février 2005
Statut
Membre
Dernière intervention
30 janvier 2006

Merci pour ton aide j'essai si ca marche mais quelle classe faut-il appeler pour que "CultureInfo" soit reconnu ?

Merci d'avance!
Messages postés
43
Date d'inscription
lundi 14 février 2005
Statut
Membre
Dernière intervention
30 janvier 2006

c bon j'ai trouvé sur le forum!!!!!

merci!!
Messages postés
154
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
22 août 2007

tu peux également remplacer toutes les virgules par des point avant de le caster.
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
Mauvaise pratique le remplacement dans la chaine : qu'est ce qui te garantis que l'utilisateur ne vas pas choisir le ';' (par exemple) comme séparateur décimal pour son système ?
Et dans ce cas si il saisit "2;7", il s'agit d'une valeur correcte :-)
Donc il est en général préférable de travailler avec la culture de l'utilisateur.

/*
coq
MVP Visual C#
*/