我的值範圍從1到10000000. 值10000後,我需要顯示值爲1E6,1E7,1E8,.... 如何在string.Format中設置?C#中的字符串格式
感謝大家的回覆。
現在我可以使用格式「0.E0」 顯示1E5,1E6,1E7,....但我不想設置「E」從1到10000.
如何解決此問題?
我的值範圍從1到10000000. 值10000後,我需要顯示值爲1E6,1E7,1E8,.... 如何在string.Format中設置?C#中的字符串格式
感謝大家的回覆。
現在我可以使用格式「0.E0」 顯示1E5,1E6,1E7,....但我不想設置「E」從1到10000.
如何解決此問題?
您可以使用exponent notation,但我認爲它可以適用於所有數字,而不僅僅適用於大於10000的數字。您可能需要有一個條件來處理這種情況。
我建議將該值作爲浮點數引用。這樣你可以使用「NumberStyles.AllowExponent」,這將提供你正在尋找的東西。
string i = "100000000000";
float g = float.Parse(i,System.Globalization.NumberStyles.AllowExponent);
Console.WriteLine(g.ToString());
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"));
像這樣的東西應該做的伎倆:
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:爲該功能選擇一個更好的名稱。
可能作爲擴展方法更好...... – 2010-08-16 09:17:45
@Dan:它的標記C#2.0,那個版本有擴展方法嗎?我認爲它們是在3.0中引入的。但是,是的,作爲擴展方法會更好。 – ngoozeff 2010-08-16 09:40:11
謝謝,但我只需要顯示1E11,但你的代碼顯示+我不需要的符號 – Guddu 2010-08-16 08:48:20
這是相反的。在這裏你從一個字符串解析一個浮點數。當它是一個浮點數時,它沒有任何格式化,當然,打印它只是打印數字。 – Kobi 2010-08-16 09:01:37