2010-08-16 51 views
6

我的值範圍從1到10000000. 值10000後,我需要顯示值爲1E6,1E7,1E8,.... 如何在string.Format中設置?C#中的字符串格式

感謝大家的回覆。
現在我可以使用格式「0.E0」 顯示1E5,1E6,1E7,....但我不想設置「E」從1到10000.
如何解決此問題?

回答

2

您可以使用exponent notation,但我認爲它可以適用於所有數字,而不僅僅適用於大於10000的數字。您可能需要有一個條件來處理這種情況。

0

我建議將該值作爲浮點數引用。這樣你可以使用「NumberStyles.AllowExponent」,這將提供你正在尋找的東西。

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

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

謝謝,但我只需要顯示1E11,但你的代碼顯示+我不需要的符號 – Guddu 2010-08-16 08:48:20

+0

這是相反的。在這裏你從一個字符串解析一個浮點數。當它是一個浮點數時,它沒有任何格式化,當然,打印它只是打印數字。 – Kobi 2010-08-16 09:01:37

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 

如果你希望它是更漂亮,試試這個:

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

像這樣的東西應該做的伎倆:

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:爲該功能選擇一個更好的名稱。

+0

可能作爲擴展方法更好...... – 2010-08-16 09:17:45

+0

@Dan:它的標記C#2.0,那個版本有擴展方法嗎?我認爲它們是在3.0中引入的。但是,是的,作爲擴展方法會更好。 – ngoozeff 2010-08-16 09:40:11