如何解析字符串到双

问题描述:

这里是我的字符串如何解析字符串到双

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

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));