C# WinForm应用中如何将加载的文本数据转为double类型而非string
实现方案
- 第一步:在窗体类的方法外部声明全局double类型集合,方便后续全局访问数据、计算最大值:
// 写在Form类的内部,所有方法的外面 List<double[]> allDoubleData = new List<double[]>();
- 第二步:修改按钮点击事件代码,新增字符串转double的逻辑,同时保留原有表格赋值逻辑,默认加了异常兼容避免文本内有非数字内容导致程序崩溃:
private void button1_openfile_Click(object sender, EventArgs e) { // 加载新数据前清空旧内容,避免重复累加 table.Rows.Clear(); allDoubleData.Clear(); string[] lines = File.ReadAllLines(@"C:\Users\Siti Nurhazwani\Desktop\table.txt"); string[] values; for (int i = 0; i < lines.Length; i++) { // lines本身就是字符串数组,无需再调用ToString() values = lines[i].Split('/'); string[] tableRow = new string[values.Length]; double[] doubleRow = new double[values.Length]; for (int j = 0; j < values.Length; j++) { tableRow[j] = values[j]; // 字符串转double,转换失败默认存0,也可以自行添加转换失败的提示逻辑 double.TryParse(values[j].Trim(), out doubleRow[j]); } table.Rows.Add(tableRow); allDoubleData.Add(doubleRow); } }
- 第三步:后续计算最大值的方法示例
// 1. 取所有数据的全局最大值 double globalMax = allDoubleData.SelectMany(row => row).Max(); // 2. 取指定行的最大值(示例取第一行,索引从0开始) double rowMax = allDoubleData[0].Max();
注意:如果使用
Max()方法报错,需要在代码顶部引入对应命名空间:using System.Linq;
内容的提问来源于stack exchange,提问作者hycal99
相关产品推荐
相关产品推荐

