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

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

Merci SharpMao 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 123 internautes ce mois-ci

Commenter la réponse de SharpMao
Meilleure réponse
Nikoui 794 Messages postés vendredi 24 septembre 2004Date d'inscription 19 août 2008 Dernière intervention - 26 juin 2006 à 15:34
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");

Merci Nikoui 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 123 internautes ce mois-ci

Commenter la réponse de Nikoui
SharpMao 1025 Messages postés mardi 4 février 2003Date d'inscription 7 juin 2010 Dernière intervention - 27 juin 2006 à 14:56
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.