Decimal: 2 chiffres après la virgule sinon rien

Signaler
Messages postés
339
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
25 mars 2009
-
Messages postés
339
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
25 mars 2009
-
Bonjour,

Je manipule des decimal pour de l'argent, et je souhaite les afficher selon la condition suivante:

S'ils ont des chiffres après la virgule, alors on les écrit avec 2 chiffres après la virgule (ie: 5.34 => 5.34, 6.1 => 6.10)
S'ils n'en ont pas, alors on les écrit comme des entiers, c'est à dire sans afficher .00

Je ne sais pas trop comment faire, pour le moment je cast le decimal en int puis le recast en decimal pour le comparer à l'original, et j'écris ca:

decimal d;
int i = (int)d;

            if ((decimal)i == d)
            {
                //le decimal est un entier: pas de chiffre après la virgule
                return String.Format("${0}", i.ToString(_culture.NumberFormat));
            }
            else
            {
                //2 chiffres après la virgule
                return String.Format("${0}", d.ToString("{0:0.00}", _culture.NumberFormat));
            }

Y'a t-il moyen de compacter tout ça dans un seul truc?

2 réponses

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
56
Hello,
Le format monétaire est obtenu avec "c" ... (donc par exemple String.Format("{0:c}", x)). C'est lui qui décidera si oui ou non il faut afficher des zéros pour les francs entier selon la culture (enfin, je ne sais même pas si pour une certaine culture ça se fait comme ça...)

Je ne suis pas persuadé que ce soit bien que ce soit toi qui décides de ça ?!

<hr />
-Blog-
-Site Perso-
Messages postés
339
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
25 mars 2009
5
Si si j'ai vraiment besoin d'avoir ce comportement précis, je ne veux pas du ".00" quelque soit la culture utilisée. Si y'a pas de solution, tant pis je garde mes cast tout moches :(