我有一个程序写入csv两列。一个是比例,形式为1:100,或类似的东西,另一个是分数。
这些值存储在字典中并按如下方式打印:
foreach (String s in p.normalizedScore.Keys)
{
sw.WriteLine(s + DELIM + p.normalizedScore[s]);
}
其中sw是StreamWriter,DELIM是逗号。产出如下:
1:10,7.498378506
0.111111111,18.46320676
0.736111111,30.08283816
1:10000,40.80688802
1:100000,51.93716854
1:1000000,62.89993635
1:10000000,73.54010349
分数都是正确的,但其中2个比例打印不正确(应该增加10倍,所以应该有1:100和1:1000)。当我进入调试器时,我发现在打印时,它仍然正确地读取所有比率,这意味着我找不到我的代码中比率错误的任何地方。有没有人知道问题可能是什么?
编辑:以上输出是直接从Excel复制的,但如果我在记事本中查看它,数据似乎很好,所以在我看来问题是Excel。 (仍然不知道你在想什么。)
答案 0 :(得分:1)
根据评论 - 这是一个Excel格式问题,而不是代码问题。
将Cory的评论添加到答案中,因为我认为它增加了重要的价值:
如果你在你的比率附近加上引号,Excel不应该尝试任何有趣的 格式化业务(您不会在Excel中看到报价, 这只是用于限定价值的CSV规范的一部分。)
答案 1 :(得分:1)
不要只是双击文件并在Excel中打开。打开一个新工作表并从文本文件导入。然后,您将指定它是一列文本 - 或者您可以使用文本限定符创建csv,并在导入中使用它。
或者,您可以在s
变量前添加空格。
sw.WriteLine(" "+ s + DELIM + p.normalizedScore[s]);
'1:10'不会被视为表达。