Formatage de nombre en C# la jungle [Résolu]

Signaler
Messages postés
666
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
-
Messages postés
666
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
-
Bonjour

Chaque fois que je dois formater un nombre ou un print en C# j'ai des frissons d'apréhension et d'ailleurs je ne m'en sort toujours pas
Déja en C c'etait pas tres clair mais a la longue on s'habitue, autant en C# la diversité des methodes et le manque d'explications détaillée avec exemples rendent l'exercice totalement périlleux et alléatoire !

J'essaye de formater undouble avec 6 digit derriere la virgule mais je veux avoir un point et pas une virgule !

La palme d'or a celui qui peut trouver une explication exhaustive avec exemple de la bonne maniere d'aborder le probleme selon les circonstances

4 réponses

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
Bonsoir,
Tu peux essayer comme ceci:

double d = 12.434534546464654D;

Console.WriteLine(
String.Format(
CultureInfo.InvariantCulture,
"{0:0.000000}", d));

<hr />
-My Blog-
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
Oui c'est un sujet assez vaste et je n'ai pas de liens précis à fournir... sorry.
Concernant le Console.WriteLine, ce n'est pas tout à fait la même chose, car cette méthode ne possède pas de surcharge permettant de passer un IFormatProvider, on est alors obligé de passer par un String.Format.

Pour le Round + ToString, je n'ai pas testé si ça fonctionnait, mais si c'est le cas, je trouve la solution moins élégante ;-)

<hr />
-My Blog-
Messages postés
666
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
5
Merci Bidou

Oui, ca marche

Mais ce qui serait génial c'est un petit (ou gros ?) tutorial essentiellement consacré au formatage en C# car ern dehors de solution plic ploc ponctuelle; le sujet me semble vaste et la doc eparpillée un peu partout

Console.WriteLine(String.Format(CultureInfo.InvariantCulture, "{0:0.000000}", d));
+/- = à
Console.WriteLine(

"{0:0.000000}", d);

Et j'ai auussi vu des truc du genre

      Text = Math.Round(d, 2).ToString(CultureInfo.CurrentCulture);
Messages postés
666
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
5
Merci Bidou