在C#中如何从三个decimal变量中找出最小的两个数?
从三个decimal变量中找出最小的两个数
这里有两种实用的实现方式,根据需求选择即可:
方法一:利用数组排序(简洁直观)
把三个变量存入数组后排序,直接取前两个元素就是最小的两个数:
decimal[] angles = { angle1, angle2, angle3 }; Array.Sort(angles); decimal firstSmallest = angles[0]; decimal secondSmallest = angles[1];
方法二:手动比较(无额外数组开销)
通过嵌套的Math.Min先找到最小值,再从剩余两个数里找出次小值:
decimal firstSmallest, secondSmallest; // 确定第一个最小值 firstSmallest = Math.Min(Math.Min(angle1, angle2), angle3); // 从剩下的两个数中找次小值 if (firstSmallest == angle1) { secondSmallest = Math.Min(angle2, angle3); } else if (firstSmallest == angle2) { secondSmallest = Math.Min(angle1, angle3); } else { secondSmallest = Math.Min(angle1, angle2); }
两种方法各有优势:第一种代码量少,后续如果变量数量增加(比如变成4个),修改起来更方便;第二种不需要创建额外数组,逻辑直接,适合追求极致内存简洁使用的场景。
内容的提问来源于stack exchange,提问作者Terrance Chang
相关产品推荐
相关产品推荐

