【问题标题】:Exporting double value to CSV将双精度值导出到 CSV
【发布时间】:2016-07-15 10:15:19
【问题描述】:

我正在尝试将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);
    }
};

CSVExcel/Notepad打开时的输出是一样的,如下

7.40E-06
1.23E-06
1.25E-07

期望输出与CSV 文件中的输入相同。期待任何类型的输入/建议。谢谢。

【问题讨论】:

  • 数量一样,你为什么要关心?

标签: c# csv double export-to-csv


【解决方案1】:

如果您想表示以某种特殊格式(例如带有前导零)的值,请使用格式String.Format()。你不需要StreamWriter:输入File.WriteAllLines 让.Net 为你完成工作:

  File.WriteAllLines(@"D:\Test.csv", 
    arr.Select(item => item.ToString("F9", CultureInfo.InvariantCulture)));

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      将它们保存为字符串而不是双精度;

      using (StreamWriter writer = new StreamWriter(@"D:\Test.csv"))
      {
          foreach (double item in arr)
          {
              writer.WriteLine(item.ToString("#.#########");
          }
      };
      

      对于格式化,您可以使用任何following:

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

      【讨论】:

        【解决方案4】:

        您可以指定double string 的格式,方法是使用"F9" 之类的浮点格式:

        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 等...)

        【讨论】:

          猜你喜欢
          • 2017-09-29
          • 2012-11-07
          • 2016-10-21
          • 2016-11-11
          • 2021-01-05
          • 1970-01-01
          • 1970-01-01
          • 2013-01-24
          • 1970-01-01
          相关资源
          最近更新 更多