将双精度值导出到 CSV

Exporting double value to CSV

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

Excel/Notepad中打开CSV时输出相同,如下

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

期望输出与 CSV 文件中的输入相同。期待任何一种input/suggestions。谢谢。

您可以通过输入浮点格式来指定 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 等...)

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

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###"

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

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

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