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 :

Convert string to int de nombres décimaux (en c#) [Débutant]


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 64
    Points : 42
    Points
    42
    Par défaut Convert string to int de nombres décimaux (en c#)
    Bonjour à tous,

    J'essaie de créer une petite application en c# qui pourrait sembler très simple pour certains.

    J'aimerais récupérer la valeur décimale (exemple 13.23 ou 13,23) contenue dans une textbox (un string donc) pour la multiplier par la valeur d'une autre textbox.
    Le résultat est alors affiché dans une dernière textbox.
    Mon code fonctionne avec des nombres non décimaux mais plante en cas de nombres décimaux sur cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    double Wawaouf = Convert.ToInt32(Waouf.Text);
    Pourriez-vous m'aider sur cette ligne ?

    Merci.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 64
    Points : 42
    Points
    42
    Par défaut
    A force de chercher, j'ai trouvé une piste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    decimal Wawaouf = Convert.ToDecimal(Waouf.Text);
    Cette ligne fonctionne bien mais il faut absolument mettre une "virgule", si on place autre chose, un "point" par exemple, ça plante.
    2,61 : ça fonctionne
    2.61 : ça plante

    Comment puis-je faire reconnaitre le "point" comme une virgule ?

    Merci.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 64
    Points : 42
    Points
    42
    Par défaut
    Re,
    j'ai réussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    decimal Wawaouf = Convert.ToDecimal(Waouf.Text.Replace('.', ','));
    Merci à tous.
    A bientôt.

  4. #4
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Il est préférable, d'après moi, d'utiliser CultureInfo.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    decimal Wawaouf = Convert.ToDecimal(Waouf.Text, System.Globalization.CultureInfo.InvariantCulture);
    CultureInfo est une classe encapsulant les paramètres régionaux utilisés. Par défaut, elle prend les paramètres de Windows.

    Vu que tu es sur un Windows Français, les paramètres régionaux indique que c'est la "," qui sépare les nombres décimaux (c'est comme ça en France).

    Le fait de passer CultureInfo.InvariantCulture, indique à la fonction d'utiliser le séparateur décimal de la CultureInfo Invariant qui est globalement celle des Anglais pour laquelle le "." est le séparateur décimal.

    Tu peux aussi passer les paramètres régionaux d'un autre pays en utilisateur new CultureInfo("es-ES") pour l'Espagne par exemple.
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 123
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 123
    Points : 1 630
    Points
    1 630
    Par défaut
    et sinon Convert.ToInt32 ça convertit en entier 32 bits (Int32) donc nombre sans virgule
    Convert.ToDecimal en type décimal
    et Convert.ToSingle ou Convert.ToDouble aussi pour convertir en nombre décimal (https://learn.microsoft.com/fr-fr/do...-numeric-types )

  6. #6
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 898
    Points : 1 915
    Points
    1 915
    Par défaut
    Les méthodes de la classe Convert sont très souples mais payent cette souplesse sur leurs performances, puisqu'il y a beaucoup de code de contrôle sur le type d'objet passé. Quand on a une chaîne à convertir en nombre il vaut mieux passer par les méthodes de parsing, comme decimal.Parse ou decimal.TryParse, qui peuvent prendre en paramètre une CultureInfo en tant que formateur de nombre.

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

Discussions similaires

  1. utilise la convertion string to int
    Par zikose dans le forum C#
    Réponses: 5
    Dernier message: 28/04/2015, 11h47
  2. [Débutant] convert. ToInt32 string to int 32
    Par xingjing910 dans le forum VB.NET
    Réponses: 7
    Dernier message: 19/03/2012, 08h25
  3. convertion string en int : demande explication
    Par kuja2053 dans le forum C++
    Réponses: 4
    Dernier message: 20/04/2008, 00h10
  4. PL-pgsql : convert string to int
    Par Latmy dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 22/02/2008, 17h29
  5. [convertion]String vers int
    Par laclac dans le forum Langage
    Réponses: 4
    Dernier message: 12/04/2007, 10h49

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