[英]System.Format.FormatException when trying double.Parse()
我的程序抛出System.FormatException: "The entrystring has the wrong format."
每当我尝试运行此代码时:
public double[] ReturnCoordsFromString(string CoordString)
{
string[] cArrStr = CoordString.Split(' ');
List<double> NumList = new List<double>();
foreach (string elem in cArrStr)
{
Console.WriteLine(elem);
double b = Convert.ToDouble(elem); // <= Error is here
NumList.Add(b);
}
double[] retN = NumList.ToArray<double>();
return retN;
}
我也尝试过使用Convert.ToDouble(elem)
和带有ascii和utf_8的Encodings来运行它。 这些都不起作用。
要了解我的代码:
我从另一个函数调用该函数,并且CoordString
参数看起来像这样: 90 10 1000
所以它们都是Integer,但是我需要将它们作为double。 (我尝试过Int32.Parse()
,然后将其转换为double,在这里它在Int32.Parse()
部分崩溃了)
我的代码应获取CoordString( "90 10 1000"
)并将其拆分为单个字符串( ["90", "10", "1000"]
)。 Console.WriteLine(elem)
打印正确的数字,不打印字母,仅显示数字作为字符串。
知道为什么/如何解决? 到目前为止,没有其他建议的问题起作用。
编辑:
奇怪的是,打印elem
效果很好。 但是异常窗口向我显示了这一点:
b 0 double
elem "" string
// The class name here
您可能在某个地方存在双倍空格,从而导致了问题。 尝试指定StringSplitOptions.RemoveEmptyEntries
:
string[] cArrStr = CoordString(' ', StringSplitOptions.RemoveEmptyEntries)
代替
string[] cArrStr = CoordString.Split(' ');
另外,您应该使用Double.TryParse
而不是Convert.ToDouble
,因为Double.TryParse
仅在无法转换时将返回false,而Convert.ToDouble
将引发异常:
所以使用这个:
double b;
if(Double.TryParse(elem, out d))
{
// value is a double
}
代替
double b = Convert.ToDouble(elem);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.