C#如何剔除double类型数据中的0值并求取剩余数值的最大值
实现方案
首先需要在代码顶部引入LINQ命名空间:
using System.Linq;
之后在你现有变量赋值的代码后,添加如下逻辑即可:
// 将所有19个double变量存入数组 double[] allValues = new double[] { m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, m16, m17, m18, m19 }; // 过滤所有0值后取最大值 double validMax = allValues.Where(val => val != 0).Max();
如果需要兼容所有数值都是0的场景,避免调用Max时抛出空序列异常,可以改成如下写法:
double validMax = allValues.Where(val => val != 0).DefaultIfEmpty(0).Max();
如果你不想使用LINQ,也可以用遍历的方式实现:
double validMax = double.MinValue; foreach (double val in allValues) { if (val != 0 && val > validMax) { validMax = val; } } // 处理所有值都是0的情况 if (validMax == double.MinValue) { validMax = 0; }
内容的提问来源于stack exchange,提问作者Oguzhan
相关产品推荐
相关产品推荐

