我是C#的初学者。我正在尝试将string
转换为double
。以下是方法double.Parse()
的代码:
static void Main(string[] args)
{
string s="0.5";
double b = double.Parse(s);
Console.WriteLine("double.Parse() - {0}",b);
}
我也试过了System.Convert.ToDouble()
:
static void Main(string[] args)
{
string s="0.5";
double b = System.Convert.ToDouble(s);
Console.WriteLine("Convert.ToDouble() - {0}",b);
}
程序以两种方式抛出异常:
“输入字符串的格式不正确”。
请帮忙!!!提前谢谢。
答案 0 :(得分:4)
正如谢尔盖别列佐夫斯基评论的那样,这可能是因为你的机器文化使用的,而不是。作为小数点分隔符。如果你想强迫它使用。 (考虑其含义)您必须使用invariant culture进行解析。在this article的底部有很多关于如何实现这一目标的例子。
答案 1 :(得分:3)
我认为您当前的文化有','作为小数点分隔符,如果是这种情况,请使用“0,5”代替“0.5”或更改分隔符:
var s="0.5";
var culture = CultureInfo.CurrentCulture.Clone();
culture.NumberFormat.NumberDecimalSeparator = ".";
var b = double.Parse(s, culture);
Console.WriteLine("double.Parse() - {0}",b);
试试看,看看它是否修复了它。
答案 2 :(得分:2)
谢尔盖是completely right。
Convert.ToDouble
method和Double.Parse
method都默认使用CurrentCulture
。
看起来您当前的文化NumberFormatInfo.NumberDecimalSeparator
property不是.
,这就是您的代码抛出FormatException
的原因。
作为解决方案,您可以在解析之前将代码中的NumberDecimalSeparator
设置为.
。
CultureInfo c = CultureInfo.CurrentCulture;
c.NumberFormat.NumberDecimalSeparator = ".";
double b = Double.Parse(s, c); // Or Convert.ToDouble(s, c)
顺便说一句,使用Convert.ToDouble(String)
方法相当于Double.Parse(String)
方法。