0

我有一个写入 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 上。(还是不知道你介意什么。)

4

2 回答 2

1

根据评论 - 这是一个 Excel 格式问题,而不是代码问题。

将 Cory 的评论添加到答案中,因为我认为它增加了重要的价值:

如果您在比率周围加上引号,Excel 不应该尝试任何有趣的格式化业务(您不会在 Excel 中看到引号,这只是用于限定您的值的 CSV 规范的一部分)。

于 2013-01-29T22:24:43.087 回答
1

不要只是双击文件并在 excel 中打开。打开一个新工作表并从文本文件导入。然后,您将指定它是一列文本 - 或者您可以使用文本限定符创建 csv 并在导入中使用它。

或者,您可以在s变量前面添加一个空格。

sw.WriteLine(" "+ s + DELIM + p.normalizedScore[s]);  

'1:10' 不会被视为表达式。

于 2013-01-29T22:57:18.033 回答