Decimal.Tostring et "leading zeros" [Résolu]

Messages postés
1025
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
- - Dernière réponse : SharpMao
Messages postés
1025
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
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
1025
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
46
3
Merci
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

Dire « Merci » 3

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

Codes Sources 152 internautes nous ont dit merci ce mois-ci

Commenter la réponse de SharpMao
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
7
3
Merci
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");

Dire « Merci » 3

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

Codes Sources 152 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Nikoui
Messages postés
1025
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
46
0
Merci
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
Commenter la réponse de SharpMao