2010-12-04 90 views
3

這裏是我的字符串如何解析字符串到雙

20.0e-6 

我解析它像

String Ans=Double.Parse("20.0e-6") 

現在我得到的結果類似​​ 但所需的輸出應該是像 0.00002

如何得到它?

+0

是啊....你是對的。但我需要一個字符串`0.00002`而不是`2E-05` – 2010-12-04 09:31:22

+0

是合法的C#...還是VB? – BoltClock 2010-12-04 09:32:40

+0

爲什麼不是?字符串可以大寫,變量名也可以。 – Miguel 2010-12-04 09:36:28

回答

10

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.#####"); 
} 
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));