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

Windows Forms Discussion :

[C#.Net] ajouter un "0" pour afficher 2 chiffres après la virgule


Sujet :

Windows Forms

  1. #1
    Membre habitué
    Inscrit en
    Octobre 2004
    Messages
    353
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 353
    Points : 139
    Points
    139
    Par défaut [C#.Net] ajouter un "0" pour afficher 2 chiffres après la virgule
    Bonjour,

    J'aimerai ajouter un "0" à mon chiffre s'il possède 1 seul chiffre après la virgule.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            public Monnaie(double valeur, String symbole)
            {
                this.Valeur = System.Math.Round(valeur*100, 2, MidpointRounding.AwayFromZero)/100;
                this.Symbole = symbole;
            }
    Par exemple :
    valeur > résultat souhaité
    2 > 2 €
    2.1 > 2.10 €
    2.12 > 2.12 €
    2.123 > 2.13 €
    2.129 > 2.13 €

    Merci

  2. #2
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 77
    Points : 92
    Points
    92
    Par défaut
    Bonjour,
    il faut que tu regarde du coté des formats.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                float f = 0.1f;
                MessageBox.Show(f.ToString("00.00"));
    affiche "00.10".

    Plus d'informations ici :
    http://msdn2.microsoft.com/en-us/lib...k8(vs.71).aspx

  3. #3
    Membre habitué
    Inscrit en
    Octobre 2004
    Messages
    353
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 353
    Points : 139
    Points
    139
    Par défaut
    Citation Envoyé par clochettes Voir le message
    Bonjour,
    il faut que tu regarde du coté des formats.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                float f = 0.1f;
                MessageBox.Show(f.ToString("00.00"));
    affiche "00.10".

    Plus d'informations ici :
    http://msdn2.microsoft.com/en-us/lib...k8(vs.71).aspx

    Oui, ça peut m'aider dans un premier temps, mais j'aimerai manipuler un nombre à la place d'une chaîne.

    ça parait tout bête, quand on cast un int en double on a :
    12 => 12.0
    j'aimerai avoir le même genre de chose quand j'ai :
    12.1 => 12.10
    sans être obliger de passer par la Class String

    Pour le moment je vais utiliser ta solution en cherchant si on peut faire mieux.

    Merci

  4. #4
    Membre éclairé
    Avatar de shwin
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 568
    Points : 777
    Points
    777
    Par défaut
    Tu ne trouvera pas chaussure a ton point. Il faut absolument passé par un format

    monfloat.ToString("c2");
    string.format("{0:d2}", monfloat);

  5. #5
    Membre habitué
    Inscrit en
    Octobre 2004
    Messages
    353
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 353
    Points : 139
    Points
    139
    Par défaut
    Citation Envoyé par shwin Voir le message
    Tu ne trouvera pas chaussure a ton point. Il faut absolument passé par un format

    monfloat.ToString("c2");
    string.format("{0:d2}", monfloat);

    Ok, du coup c'est ma Class que j'ai modifier... j'ajoute simplement une Propriété privé qui renvoie un String, et la Propriété public qui renvoie un double se sert de celle privé.

    Du coup, ça arrange tout et c'est transparent pour l'utilisateur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            private String ValeurString
            {
                get { return valeurString; }
                set { valeurString = value; }
            }
            public double Valeur
            {
                get { return double.Parse(valeurString); }
                set { valeurString = value.ToString(); }
            }

  6. #6
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Citation Envoyé par Ticoche Voir le message
    Bonjour,

    J'aimerai ajouter un "0" à mon chiffre s'il possède 1 seul chiffre après la virgule.
    Ajouter un zéro, comme tu dis, est entièrement une problématique d'affichage. Après tout, "2.1" n'est qu'une représentation parmi une infinité de ton double. un double n'est pas spécifiquement en base 10, par exemple.
    D'ailleurs, pour un double, c'est avec double .ToString(string format) que c'est géré.

    Etant donné que ta classe Monnaie ressemble très très fort à un double, je t'invite à implémenter les mêmes interfaces que lui. En l'occurence, IFormattable, qui t'oblige à avoir une méthode Format(string format, ...), dans laquelle tu pourras appeler le string.Format du double que tu as.

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    j'ai un problème en voulant afficher des float en utilisant .toString(0.000).

    mes float du genre .3456789 deviennent .345 mais dans le 0 devant ce qui n'est pas normal d'après ce que j'ai compris non?

    merci

  8. #8
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Citation Envoyé par Calaad Voir le message
    Bonjour,
    j'ai un problème en voulant afficher des float en utilisant .toString(0.000).

    mes float du genre .3456789 deviennent .345 mais dans le 0 devant ce qui n'est pas normal d'après ce que j'ai compris non?

    merci
    Quand tu écris "dans", tu veux dire "sans", non ?
    Pour ces histoires de 0.12345 => ".123", il faut utiliser les caractères "0" ou "#", dans la chaîne de format selon que l'on veut afficher les 0 en trop ou pas. Me souviens plus précisément, expérimente La msdn a une page qui décrit tout ça très bien.

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

Discussions similaires

  1. Réponses: 26
    Dernier message: 15/10/2010, 13h18
  2. Commande pour afficher des chiffres apres la virgule
    Par manar dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 23/09/2004, 18h28

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