ToString valeur Monetaire

Résolu
cs_tigroux Messages postés 105 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 22 octobre 2008 - 28 juin 2007 à 18:11
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre 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
A voir également:

16 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
29 juin 2007 à 20:38
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
*/
3
TeBeCo Messages postés 467 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 9 mars 2011
28 juin 2007 à 19:10
dans la "currentculture" du thread (localization) ou par globalization tu devrais regardé ya surment un reglage des decimales possible

TeBeCo
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
28 juin 2007 à 20:09
Salut,

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

/*
coq
MVP Visual C#
CoqBlog
*/
0
cs_tigroux Messages postés 105 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 22 octobre 2008 16
29 juin 2007 à 08:14
-> 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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
TeBeCo Messages postés 467 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 9 mars 2011
29 juin 2007 à 09:09
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
0
cs_tigroux Messages postés 105 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 22 octobre 2008 16
29 juin 2007 à 09:22
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.
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
29 juin 2007 à 11:57
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-
0
cs_tigroux Messages postés 105 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 22 octobre 2008 16
29 juin 2007 à 12:18
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
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
29 juin 2007 à 12:39
Taper 3 ou 4 lignes de codes, c'est pas la fin du monde ou bien?

<hr />
-Blog-
0
cs_tigroux Messages postés 105 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 22 octobre 2008 16
29 juin 2007 à 14:02
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#   :)
0
TeBeCo Messages postés 467 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 9 mars 2011
29 juin 2007 à 20:42
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
0
cs_tigroux Messages postés 105 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 22 octobre 2008 16
29 juin 2007 à 22:16
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
0
cs_tigroux Messages postés 105 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 22 octobre 2008 16
29 juin 2007 à 22:18
En tout cas merci pour votre aide, et merci au coq qui comme d'habitude donne du code nickel
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
29 juin 2007 à 22:36
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
*/
0
cs_tigroux Messages postés 105 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 22 octobre 2008 16
29 juin 2007 à 23:27
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
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
29 juin 2007 à 23:39
De rien :-)

/*
coq
MVP Visual C#
CoqBlog
*/
0
Rejoignez-nous