这是我的字符串
20.0e-6
我正在解析它,像这样:
String Ans=Double.Parse("20.0e-6")
现在我得到的结果是2E-05
,但需要的输出应该是0.00002
如何实现?
Double.Parse
的结果是一个Double
,而不是一个字符串。您需要从Double中输出一个字符串,使用ToString
。Double.Parse
方法,其中包含一个NumberStyles
参数。使用Float
值允许指数符号表示法:string Ans=Double.Parse("20.0e-6", NumberStyles.Float).ToString("0.#####");
如果你不想冒异常风险(例如 InvalidCastException
),可以使用 TryParse
:
Double res;
if (Double.TryParse("20.0e-6", NumberStyles.Float,
CultureInfo.InvariantCulture ,res))
{
string Ans = res.ToString("0.#####");
}
ToString
的错误-您需要为其提供格式字符串才能正确转换。答案已更新。 - Oded这是同一个数字,但如果您想修改字符串的输出,可以在ToString()
上使用格式化程序。
http://msdn.microsoft.com/zh-cn/library/dwhawy9k.aspx
因此,
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));
double.TryParse
.... - marc_s
0.00002
而不是2E-05
。 - Thorin Oakenshield