2010-08-16 6 views
6

Mam wartość w zakresie od 1 do 10000000. Po wartości 10000 muszę wyświetlać wartości 1E6,1E7,1E8, .... Jak ustawić tę wartość w łańcuchu.Format?format ciągu znaków w języku C#

Dziękuję wszystkim za odpowiedź.
Teraz mogę wyświetlić 1E5,1E6,1E7, .... przy użyciu formatu "0.E0" , ale nie chcę ustawić "E" od 1 do 10000.
Jak tego dokonać?

Odpowiedz

2

Można użyć numeru exponent notation, ale myślę, że będzie działać dla wszystkich liczb, a nie tylko dla tych, które są większe niż 10000. Być może trzeba mieć warunki, aby obsłużyć tę sprawę.

0

Proponuję odnieść się do wartości jako float. W ten sposób możesz użyć "NumberStyles.AllowExponent", który zapewni dokładnie to, czego szukasz.

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

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

dziękuję, ale muszę pokazać tylko 1E11, ale twój kod pokazuje + symbol, którego nie potrzebuję. – Guddu

+0

Jest odwrotnie. Tutaj parsujesz float z łańcucha. Kiedy jest float, nie ma oczywiście żadnego formatowania, a wydrukowanie go po prostu wypisuje numer. – 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 

Jeśli ma to być ładniejsza, spróbuj tego:

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

Coś jak to powinno załatwić sprawę:

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: wybierz lepszą nazwę dla funkcji.

+0

Prawdopodobnie będzie jeszcze ładniej jako metoda rozszerzenia ... –

+0

@Dan: jej oznaczony C# 2.0, czy ta wersja ma metody rozszerzenia? Myślałem, że zostały wprowadzone w 3.0. Ale tak, byłoby znacznie przyjemniej jako metoda rozszerzenia. – ngoozeff