我正在尝试将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);
}
};
在CSV
中打开Excel/Notepad
时的输出是相同的,如下所示
7.40E-06
1.23E-06
1.25E-07
期望输出与CSV
文件中的输入相同。期待任何形式的意见/建议。感谢。
答案 0 :(得分:5)
您可以通过设置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
是小数点分隔符后要保留的数量(.
)。您可以根据需要指定数字(例如F10
,F11
等等。)
答案 1 :(得分:2)
将它们保存为字符串而不是double;
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###"
答案 2 :(得分:1)
如果您希望代表某些特殊格式的值(例如,使用前导零),请使用格式 :String.Format()
。您无需StreamWriter
:放File.WriteAllLines
并让.Net为您完成工作:
File.WriteAllLines(@"D:\Test.csv",
arr.Select(item => item.ToString("F9", CultureInfo.InvariantCulture)));
答案 3 :(得分:0)