2016-03-28 70 views
3

我想double值导出到CSV文件如下导出双值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文件中的输入相同。期待任何形式的意见/建议。谢谢。

+0

的数量是一样的,所以为什么你关心吗? – jdweng

回答

5

你可以通过把浮点格式一样"F9"指定doublestring的格式:

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

将它们保存为字符串,而不是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###" 
0

enter image description here

你只需要扩展列的宽度(双击某& B之间的线)。

1

如果你想代表在一些特殊格式(例如用前导零)使用值格式化String.Format()。你有StreamWriter没有必要:把File.WriteAllLines,让净为你做的工作:

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