這裏是我的字符串如何解析字符串到雙
20.0e-6
我解析它像
String Ans=Double.Parse("20.0e-6")
現在我得到的結果類似 但所需的輸出應該是像 0.00002
如何得到它?
這裏是我的字符串如何解析字符串到雙
20.0e-6
我解析它像
String Ans=Double.Parse("20.0e-6")
現在我得到的結果類似 但所需的輸出應該是像 0.00002
如何得到它?
Double.Parse
的結果是Double
,不是字符串。您需要使用ToString
從雙精度輸出一個字符串。
您還應該使用Double.Parse
的過載參數NumberStyles
。使用Float
值允許指數符號:
string Ans=Double.Parse("20.0e-6", NumberStyles.Float).ToString("0.#####");
如果你不想冒險例外(InvlidCastException
例如),您可以使用TryParse
:
Double res;
if (Double.TryParse("20.0e-6", NumberStyles.Float,
CultureInfo.InvariantCulture ,res))
{
string Ans = res.ToString("0.#####");
}
這是相同數量的,但如果你要修改字符串的輸出,您ToString()
http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx
使用格式化0因此,爲了得到你想要的結果
String Ans=Double.Parse("20.0e-6").ToString("0.0####")
一種方法是使用String.Format
如下:
double x = 20.0e-6;
string y = string.Format("{0:0.######}",x);
Console.WriteLine(y);
鑑於你的例子,這個輸出值0.00002
編輯
我剛剛意識到這實際上與你的問題相反爲保持答案的有用性,我將添加以下內容:
給定一個字符串,可以解析爲double,然後應用與上面相同的邏輯。可能不是最優雅的解決方案,但它提供了另一種獲得所需結果的方法。
string x = "20.0e-6";
var y = double.Parse(p);
Console.WriteLine(String.Format("{0:0.######}",y));
是啊....你是對的。但我需要一個字符串`0.00002`而不是`2E-05` – 2010-12-04 09:31:22
是合法的C#...還是VB? – BoltClock 2010-12-04 09:32:40
爲什麼不是?字符串可以大寫,變量名也可以。 – Miguel 2010-12-04 09:36:28