我正在尝试将csv文件读入数据结构,但我似乎无法将其转换为双重类型。
static void Main(string[] args)
{
var reader = new StreamReader(File.OpenRead(@"E:\file.csv"));
List<Double> close = new List<Double>();
int counter = 0;
while (!reader.EndOfStream)
{
counter = counter + 1;
var line = reader.ReadLine();
var values = line.Split(',');
string str = values[4];
Double val = Convert.ToDouble(str); //THIS IS THE PROBLEM
Console.WriteLine(values[4].GetType());
}
// Prompt to Exit
Console.WriteLine("Press any key to exit.");
Console.Read();
}
我收到错误:
An unhandled exception of type 'System.FormatException' occurred in mscorlib.dll
Additional information: Input string was not in a correct format.
values[4]
的类型为System.string
答案 0 :(得分:1)
'System.FormatException'
表示由CSV文件中的数据引起的运行时问题,而不是程序代码引起的问题。
这意味着索引4处的项目不代表有效的double
值。例如,它可以是空字符串,或其他一些非数字字符串。为了正确诊断此问题,请在Convert.ToDouble(str)
的调用周围添加try / catch,并在出现异常时打印该消息:
Double val;
try {
val = Convert.ToDouble(str);
} catch (FormatException fe) {
Console.Error.WriteLine("Got {0} when processing '{1}'", fe.Message, str);
}
答案 1 :(得分:1)
使用Double.Parse方法。然后,您可以提供与.csv中的内容相对应的NumberStyles。