如何解析字符串到双
问题描述:
这里是我的字符串如何解析字符串到双
20.0e-6
我解析它像
String Ans=Double.Parse("20.0e-6")
现在我得到的结果类似 但所需的输出应该是像 0.00002
如何得到它?
答
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));
是啊....你是对的。但我需要一个字符串`0.00002`而不是`2E-05` – 2010-12-04 09:31:22
是合法的C#...还是VB? – BoltClock 2010-12-04 09:32:40
为什么不是?字符串可以大写,变量名也可以。 – Miguel 2010-12-04 09:36:28