Visual Basic中将Double类型4×1数组保存为文本文件的问题
嘿,这个问题我之前也碰到过!你看到文件里显示system.double[],是因为直接对整个数组调用.ToString()的时候,默认返回的是数组的类型名称,而不是数组里的元素内容。这是.NET里数组类型的默认行为,不是你的错😉
接下来给你两种靠谱的解决方法,直接就能用:
方法1:处理一维数组(你的4×1数组如果是一维的话)
如果你的数组是double[]类型(比如new double[4]),用string.Join()就能快速把所有元素转换成带分隔符的字符串,然后写入文件:
// 先定义并赋值你的4×1数组 double[] flowArray = new double[4] { 0.5, 1.2, 3.7, 2.9 }; // 把数组元素用换行符分隔成字符串(也可以用逗号、空格等自定义分隔符) string flowContent = string.Join(Environment.NewLine, flowArray); // 写入文本文件 File.WriteAllText("flowt.txt", flowContent);
这样生成的文件里就会每行一个数值,比如:
0.5 1.2 3.7 2.9
如果需要控制数值的格式(比如保留两位小数),可以用LINQ配合格式化字符串:
string flowContent = string.Join(Environment.NewLine, flowArray.Select(num => num.ToString("F2")));
方法2:处理二维数组(如果你的4×1是double[,]类型)
要是你的数组是二维的(比如new double[4,1]),就得遍历每一行来提取元素:
double[,] flow2DArray = new double[4, 1] { { 0.5 }, { 1.2 }, { 3.7 }, { 2.9 } }; List<string> lineList = new List<string>(); // 遍历每一行 for (int i = 0; i < flow2DArray.GetLength(0); i++) { // 提取当前行的唯一元素,转成字符串加入列表 lineList.Add(flow2DArray[i, 0].ToString()); } // 写入文件,每行一个元素 File.WriteAllLines("flowt.txt", lineList);
额外小技巧:更灵活的写入方式
如果数组很大,需要边生成内容边写入,用StreamWriter会更高效:
using (StreamWriter writer = new StreamWriter("flowt.txt")) { foreach (double num in flowArray) { writer.WriteLine(num.ToString("F2")); } }
核心思路就是:不要直接把整个数组转成字符串,要逐个处理数组里的元素,把每个元素的文本值拼接起来再写入文件。
内容的提问来源于stack exchange,提问作者Plaban
相关产品推荐
相关产品推荐

