我正在使用TextFieldParser来读取CSV文件。 CSV中的这一特定列包含数字:3.14,2.65等。我正在阅读它们:
var path = @"C:\myfiles\file.csv";
using (TextFieldParser csvParser = new TextFieldParser(path))
{
csvParser.SetDelimiters(new string[] { "," });
csvParser.ReadLine();
var numbers = new string[5];
numbers[0] = csvParser.ReadFields()[23];
numbers[1] = csvParser.ReadFields()[23];
numbers[2] = csvParser.ReadFields()[23];
numbers[3] = csvParser.ReadFields()[23];
numbers[4] = csvParser.ReadFields()[23];
return numbers;
}
这样可行,但我收到的字符串会附加两个零;即。 3.14以“3.1400”返回。这有什么原因吗? TextFieldParser的配置选项,也许是?
答案 0 :(得分:1)
您可以尝试将返回的字符串解析为浮点数,如下所示:
parseFloat(csvParser.ReadFields()[23]);
在这种情况下,您应该将数组类型从字符串更改为数字。或者使用toString()
生成一个字符串 - 将其解析为浮动后的方法。
答案 1 :(得分:0)
我的感觉是代码可以在没有额外跟踪的情况下工作" 00"。如果在每个数字[x]上放置一个断点,您会发现它不包含其他字符。我的感觉是你的错误在其他地方......
至少当我在LINQPad中复制你的代码时,它没有产生你描述的错误......
答案 2 :(得分:0)
如果你在excel中创建.csv文件,那么添加额外的0并且不会通过他们的UI显示它们是臭名昭着的。
尝试在记事本中重新创建数据集,或者更好的记事本++。