这是我的字符串
20.0e-6
我正在解析它像
String Ans=Double.Parse("20.0e-6")
现在我的结果如2E-05
但是所需的输出应该是这样的
0.00002
如何获得这个?
答案 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));