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

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

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.