ToString valeur Monetaire [Résolu]

Messages postés
105
Date d'inscription
mardi 16 mars 2004
Dernière intervention
22 octobre 2008
- - Dernière réponse : cs_coq
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
- 29 juin 2007 à 23:39
Bonjour,

Je soufaite afficher un double dans un label mais à la facon d'une valeur monetaire.
123.00 => 123.00?
Je sais que l'on peux faire cela en faisant ToString("C")

Mais en fait je souhaite que cela affiche
123.20 => 123.20?
123 => 123?
Or le ToString("C") ajoute les decimaux.

Si vous avez une idée.

Merci
Afficher la suite 

Votre réponse

16 réponses

Meilleure réponse
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
3
Merci
C'est vrai que du coup je me pose aussi la question maintenant...

Enfin, au pire une petite méthode de formatage :

private String ToMoneyString(Decimal dec)
{
    return this.ToMoneyString(dec, CultureInfo.CurrentCulture);
}


private String ToMoneyString(Decimal dec, IFormatProvider provider)
{
    String format = "C";


    if (dec % Decimal.Truncate(dec) == 0)
    {
        format = "C0";
    }


    return dec.ToString(format, provider);
}

Ou en condensé :
private String ToMoneyString(Decimal dec, IFormatProvider provider)
{
    return dec.ToString((dec % Decimal.Truncate(dec) == 0) ? "C0" : "C", provider);
}

/*
coq
MVP Visual C#
CoqBlog
*/

Merci cs_coq 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 105 internautes ce mois-ci

Commenter la réponse de cs_coq
Messages postés
467
Date d'inscription
lundi 24 juin 2002
Dernière intervention
9 mars 2011
0
Merci
dans la "currentculture" du thread (localization) ou par globalization tu devrais regardé ya surment un reglage des decimales possible

TeBeCo
Commenter la réponse de TeBeCo
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
0
Merci
Salut,

Logiquement tu peux faire ce que tu veux avec les chaînes de format numériques personnalisées.

/*
coq
MVP Visual C#
CoqBlog
*/
Commenter la réponse de cs_coq
Messages postés
105
Date d'inscription
mardi 16 mars 2004
Dernière intervention
22 octobre 2008
0
Merci
-> TeBeCo : Je souhaite pas changer le reglage car je vais les afficher si il y en a.

-> Coq: Ben j'ai deja regarder là.
Mais impossible de trouver le chaine qui va bien pour faire ca. J'ai essayé des "C.##" et autres, mais rien n'y fait.
Commenter la réponse de cs_tigroux
Messages postés
467
Date d'inscription
lundi 24 juin 2002
Dernière intervention
9 mars 2011
0
Merci
code le a la main alors ...
Decimal toto = 123
Decimal tata = 123.20
String sRes;

if ((toto - (Int32)toto) != 0)
{
    toto = ((Int32)(toto*100))/100;
    sRes = toto.ToString();
}
else
{
    sRes = ((Int32)toto).Tostring();
}

(idem avec tata)
ou qqchose de similaire enfin ca me semble assez simpliste

TeBeCo
Commenter la réponse de TeBeCo
Messages postés
105
Date d'inscription
mardi 16 mars 2004
Dernière intervention
22 octobre 2008
0
Merci
Oui non le faire à la main c'est pas un probleme, mais je suis quasi persuadé que l'on peux faire ca sans coder de code.
Le ToString est la autant que l'on s'en serve. Mais si persone n'a de reponse, je ferais ca. En tout cas merci.
Commenter la réponse de cs_tigroux
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
0
Merci
Je ne sais pas si ça résoud le problème, mais tu peux indiquer le nombre de décimal désirée en faisant:
"CX" ou x est le nombre de décimal

......ToString(C0);

<hr />
-Blog-
Commenter la réponse de cs_Bidou
Messages postés
105
Date d'inscription
mardi 16 mars 2004
Dernière intervention
22 octobre 2008
0
Merci
J'avais trouvé ca aussi.
Mais en fait j'ai besoin que ca affiche les decimales que si il y en a.
Et le "C0" ne les affichera pas du tout.

En même temps je me demande de plus en plus si ca existe :(
Il va falloir que je code
Commenter la réponse de cs_tigroux
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
0
Merci
Taper 3 ou 4 lignes de codes, c'est pas la fin du monde ou bien?

<hr />
-Blog-
Commenter la réponse de cs_Bidou
Messages postés
105
Date d'inscription
mardi 16 mars 2004
Dernière intervention
22 octobre 2008
0
Merci
Non ce n'est pas le fait de tapper des lignes de codes, c'est le fait de ne pas trouver cela. Cela m'etonne de C#   :)
Commenter la réponse de cs_tigroux
Messages postés
467
Date d'inscription
lundi 24 juin 2002
Dernière intervention
9 mars 2011
0
Merci
demandes toi si tu perds plus de temps a trouver une methode en 1 ligne qui te semble parfaite mais que marlgres tout ecrira les ligne qui te manque en IL ou le faire directement en C# qui sera aussi traduis en IL et peut etre meme mieux optimisé au final ...
et compare le temps que tu perd sur le forum pour ca :p

TeBeCo
Commenter la réponse de TeBeCo
Messages postés
105
Date d'inscription
mardi 16 mars 2004
Dernière intervention
22 octobre 2008
0
Merci
Je pense que je ne suis pas le seul a vouloir utiliser les possibilités offertes pas .Net.

Apres faire du code, alors que d'autre on fait quelque chose qui est certainement mieux, je trouve ca dommage.

Apres ce n'est qu'un avis
Commenter la réponse de cs_tigroux
Messages postés
105
Date d'inscription
mardi 16 mars 2004
Dernière intervention
22 octobre 2008
0
Merci
En tout cas merci pour votre aide, et merci au coq qui comme d'habitude donne du code nickel
Commenter la réponse de cs_tigroux
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
0
Merci
Je pense qu'il disait plus ça dans le sens ratio intérêt/temps "perdu" ^^
Après je suis le premier à préférer utiliser l'intégré (la plupart de ces gens doivent avoir des compétences supérieures aux miennes, et c'est justement eux qui effectuent la maintenance !).
Mais là je serais étonné qu'un format permette de faire ça directement (et si c'est le cas, il suffira de remplacer le code de la méthode sans briser l'existant reposant dessus), ainsi tu peux te pencher sur les taches plus urgentes :-)

/*
coq
MVP Visual C#
CoqBlog
*/
Commenter la réponse de cs_coq
Messages postés
105
Date d'inscription
mardi 16 mars 2004
Dernière intervention
22 octobre 2008
0
Merci
C'est deja ce que je faisais, j'avais même deja fait le code pour le faire. Mais je me suis dit on verra bien si on pouvait mieux faire

En tout cas merci à vous tous
Commenter la réponse de cs_tigroux
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
0
Merci
De rien :-)

/*
coq
MVP Visual C#
CoqBlog
*/
Commenter la réponse de cs_coq

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.