IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Convertir string en float


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 42
    Par défaut Convertir string en float
    Bonjours à tous,

    Dans mon application je dois inserer des données dans la base et j'introduit ces données à travers des TextBox or il ya des donnés de type float (Moyenne) dans la base pour cela j'ai fait une conversion du string en float (Du text introduit dans le TextBox en float).
    Le probleme c'est qu'il n'accepte pas tous ce qui est aprés virgule.
    Exemple: si je met Moyenne = 12,33=====> Erreur apparait (Syntax incorrect vers 33)

    si j'enleve le 33 c à d Moyenne = 12 code est accepté et l'insertion se fait avec succé.

    avant d'oublier voilà le code de conversion :


    float f=float.Parse(this.textBox5.Text);

    Merci de votre aide

  2. #2
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Suivant que le séparateur soit un point ou une virgule et suivant la culture en cours, le parsing peut ne pas fonctionner. A ce moment il faut jouer avec la culture, car suivant la culture le séparateur décimal n'est pas le même (la virgule en français mais le point en anglais).

    Tu peux donc essayer comme ça par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    string s = "12.6";
    double result;
    CultureInfo ci = (s.Contains(",")) ? CultureInfo.GetCultureInfo("fr-FR") : CultureInfo.GetCultureInfo("en-US");
    if (double.TryParse(s, NumberStyles.Number, ci, out result))
    {
        // La conversion a réussie
    }
    else
    {
        // La conversion  a échouée
    }

  3. #3
    Membre averti
    Inscrit en
    Août 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 42
    Par défaut probleme non resolue
    Merci de votre aide StormimOn , mais votre solution n'a pas resolu ma probleme car je travail sur VS2003 et il n'esxiste pas "CultureInfo" mais plutôt "CultureInfoConverter" et de même pour "s.Contains" car contains n'existe plus alors il ne peut pas savoir s'il existe , ou . dans le nombre.
    Quoi faire?

  4. #4
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    La classe CultureInfo est présente sur le framework 1. Il te manque peut être une référence ou un using pour l'utiliser directement. Essaye avec le nom complet de la classe au besoin (namespaces compris donc).

    A la place de la méthode Contains, tu peux utiliser la méthode IndexOf en testant si le résultat est différent de -1 (équivaut à Contains = true).

    La méthode TryParse par contre n'est présente qu'à partir du framework 2, il faudra donc faire avec Parse et un try/catch.

    Cela donnerait quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    string s = "12,6";
    double result;
    try
    {
        CultureInfo ci = (s.IndexOf(",") != -1) ? CultureInfo.GetCultureInfo("fr-FR") : CultureInfo.GetCultureInfo("en-US");
        result = double.Parse(s, NumberStyles.Number, ci);
    }
    catch(Exception ex)
    {
        // Erreur lors de la conversion
    }
    Je n'ai pas de Visual Studio sous la main, mais ça devrait passer je pense. C'est fait rapidement, donc après à toi de gérer tout ça au mieux.

  5. #5
    Membre averti
    Inscrit en
    Août 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 42
    Par défaut Encore un petit probleme
    J'ai ajouté le using necessaire : using System.Globalization;
    alors l'erreur de CultureInfo est résolue mais un probleme apparait au niveau du methode CultureInfo.GetCultureInfo("fr-FR")
    le message d'erreur est :"System.globalization.CultureInfo doesn't contain a definition for GetCultureInfo

    alors, aidez moi que dois-je faire?

  6. #6
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    C'est une nouvelle méthode depuis le framework 2 aussi, je n'avais pas remarqué. Passe par le constructeur, il y a une surcharge où il faut indiquer la chaîne de la culture (fr-FR, en-US, ...) il me semble.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Convertir String en Float
    Par Crackerz dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/04/2014, 09h05
  2. Convertir string en float/double
    Par Elise0251 dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 05/03/2012, 17h08
  3. convertir string en float
    Par fido1 dans le forum C#
    Réponses: 3
    Dernier message: 17/09/2008, 10h21
  4. convertir String en float
    Par ulysse031 dans le forum Langage
    Réponses: 27
    Dernier message: 02/05/2007, 22h23
  5. Convertir un String en Float
    Par alex75 dans le forum Langage
    Réponses: 3
    Dernier message: 15/06/2006, 19h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo