如何将字符串解析为Double

时间:2010-12-04 09:28:33

标签: c# parsing double

这是我的字符串

  20.0e-6

我正在解析它像

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

现在我的结果如2E-05 但是所需的输出应该是这样的             0.00002

如何获得这个?

3 个答案:

答案 0 :(得分: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.#####");
}

答案 1 :(得分:2)

它是相同的数字,但如果您想修改字符串的输出,请在ToString()上使用格式化程序

http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx

所以

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

答案 2 :(得分: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));