Decimal.Tostring et "leading zeros"

Résolu
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 - 26 juin 2006 à 11:10
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 - 27 juin 2006 à 14:56
Hello,

D'abors, désolé, ce post n'a pas de rapports directs avec Mono, mais plutôt avec le Framework en général.

Voici mon problème : je dois convertir en string des nombres, avec un nombre de chifres prédéfinis.
Avec les int, pas de problèmes :

int i = 32;
i.Tostring("D5");  // -->"00032"

Mon problème vient avec les nombres de type decimal.

decimal d = 32d;
d.Tostring("D20"); 

Ici, je reçoit une exception :
System.FormatException was unhandled
  Message="Le format de la chaîne d'entrée est incorrect."

Je peux faire :

d.Tostring("00000000000000000000"); // -->"00000000000000000032"

Mais je ne trouve pas ça particulièrement beau, donc si quelqu'un à quelque chose de plus joli à proposer, je suis preneur.

Amicalement, SharpMao
A voir également:

3 réponses

SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
26 juin 2006 à 13:11
J'ai trouvé quelque chose, c'et pas génial, mais mieux que les 20 zéros :

d.Tostring().PadLeft(20,'0'); // -->"00000000000000000032"

Je suis toujours preneur si vous trouvez mieux...

Amicalement, SharpMao
3
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
26 juin 2006 à 15:34
Le format "D" n'est pas supporté pour les réels (et donc les "décimaux").

Si les nombres que tu manipules sont à virgule, alors je pense que la méthode de ton deuxième post est la meilleure. Si tu sais qu'il s'agit toujours d'entier, alors tu peux aussi caster ton décimal en entier (puisque dans ce cas, ToString("D") marche) :

((int)d).ToString("D5");
3
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
27 juin 2006 à 14:56
Hello,

Il s'agit bien d'un entier, mais qui peut théoriquement avoir 20 chiffres, et même avec des int64, ça ne suffit pas.
C'est pour ça que j'utilise des "decimal".

Merci quand même pour l'explication

Amicalement, SharpMao
0
Rejoignez-nous