2010-08-16 6 views
6

J'ai une valeur allant de 1 à 10000000. Après la valeur 10000 j'ai besoin d'afficher les valeurs comme 1E6,1E7,1E8, .... Comment régler ceci dans string.Format?format de chaîne en C#

Merci à tous pour répondre.
Maintenant, je suis en mesure d'afficher 1E5,1E6,1E7, .... en utilisant le format "0.E0" mais je ne veux pas régler "E" de 1 à 10000.
Comment faire?

Répondre

2

Vous pouvez utiliser le exponent notation mais je pense que cela fonctionnera pour tous les nombres et pas seulement pour ceux qui sont supérieurs à 10000. Vous aurez peut-être besoin d'une condition pour gérer ce cas.

0

Je suggère de se référer à la valeur en tant que flotteur. De cette façon, vous pouvez utiliser le "NumberStyles.AllowExponent" et qui fournira exactement ce que vous cherchez.

string i = "100000000000"; 
    float g = float.Parse(i,System.Globalization.NumberStyles.AllowExponent); 

    Console.WriteLine(g.ToString()); 
+0

merci mais je dois montrer que 1E11 mais votre code montre + symbole que je ne avez pas besoin – Guddu

+0

C'est le contraire. Ici vous partez un flotteur à partir d'une chaîne. Quand il s'agit d'un float, il n'a pas de formatage, bien sûr, et l'impression ne fait qu'imprimer le nombre. – Kobi

0
 
String.Format("10^8 = {0:e}", 100000000"); //The "e" will appear lowercase 
String.Format("10^8 = {0:E}", 100000000"); //The "E" will appear in uppercase 

Si vous voulez qu'il soit plus joli, essayez ceci:

 
Console.WriteLine("10^8 = " + 100000000.ToString("0.##E0")); 
2

Quelque chose comme ça devrait faire l'affaire:

void Main() 
{ 
    Console.WriteLine(NumberToString(9999)); 
    Console.WriteLine(NumberToString(10000)); 
    Console.WriteLine(NumberToString(99990)); 
    Console.WriteLine(NumberToString(100000)); 
    Console.WriteLine(NumberToString(10000000)); 
} 

// Define other methods and classes here 
static string NumberToString(int n) 
{ 
    return (n > 10000) ? n.ToString("E") : n.ToString(); 
} 

=>

9999 
10000 
9.999000E+004 
1.000000E+005 
1.000000E+007 

nb: choisissez un meilleur nom pour la fonction.

+0

Probablement encore mieux comme une méthode d'extension ... –

+0

@Dan: son C# 2.0 marqué, cette version a-t-elle des méthodes d'extension? Je pensais qu'ils ont été introduits dans 3.0. Mais oui, ce serait beaucoup plus agréable comme méthode d'extension. – ngoozeff