将双精度浮点数值导出到CSV文件

3

我正在尝试将 double 值导出到 CSV 文件中,如下所示:

double[] arr = new double[] { 0.0000074, 0.00000123, 0.0000001254 };
using (StreamWriter writer = new StreamWriter(@"D:\Test.csv"))
{
    foreach (double item in arr)
    {
        writer.WriteLine(item);
    }
};
< p > 当在 < code > Excel / Notepad 中打开 < code > CSV 时,输出结果是相同的,如下所示:
7.40E-06
1.23E-06
1.25E-07

期望在 CSV 文件中输出与输入相同的结果。期待任何形式的输入/建议。谢谢。


这些数字是一样的,所以你为什么在意呢? - jdweng
4个回答

6
您可以通过指定浮点格式,如 "F9",来确定 double 类型的字符串格式:
double[] arr = new double[] { 0.0000074, 0.00000123, 0.0000001254 };
using (StreamWriter writer = new StreamWriter(@"D:\Test.csv"))
{
    foreach (double item in arr)
    {
        writer.WriteLine(item.ToString("F9")); //note the F9
    }
};

9是小数点后你想要保留的数字位数。你可以根据自己的需求指定数字(例如F10F11等)


2
将它们保存为字符串而不是双精度数;
using (StreamWriter writer = new StreamWriter(@"D:\Test.csv"))
{
    foreach (double item in arr)
    {
        writer.WriteLine(item.ToString("#.#########");
    }
};

您可以使用以下任何一种方式进行格式化:链接

"C", "E", "e", "F", "G", "N", "P", 
"R", "#,000.000", "0.###E-000",
"000,000,000,000.00###"

1
如果您想以某种特殊格式(例如使用前导零)表示值,请使用格式化String.Format()。您不需要使用StreamWriter:使用File.WriteAllLines让 .Net 为您完成工作即可。
  File.WriteAllLines(@"D:\Test.csv", 
    arr.Select(item => item.ToString("F9", CultureInfo.InvariantCulture)));

0

enter image description here

你只需要扩展列宽(双击A和B之间的线)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接