You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# .NET 如何判断List<double>列表内所有元素是否近似相等

实现逻辑

判断列表内所有元素的最大差值是否不超过允许阈值,最简单高效的方式是直接计算列表的最大值和最小值,只要两者的差值小于等于2,就说明所有元素的差值都在可接受范围内,该方法时间复杂度仅为O(n),适合任意长度的列表。

完整实现代码

需要先处理空列表、单元素列表这类天然满足校验要求的边界场景:

using System.Linq; // 引入Linq命名空间,可直接调用Max/Min方法

var odds = new System.Collections.Generic.List<double>();
// 此处为向列表中添加数值的代码

const double AllowedMaxDiff = 2.0;
bool isApproximatelyEqual = true;

// 仅当元素数大于1时需要校验
if (odds.Count > 1)
{
    double maxValue = odds.Max();
    double minValue = odds.Min();
    isApproximatelyEqual = (maxValue - minValue) <= AllowedMaxDiff;
}

// 测试校验结果
if (isApproximatelyEqual)
{
    System.Console.WriteLine("所有元素满足近似相等要求");
}
else
{
    System.Console.WriteLine("存在元素差值超出允许范围");
}
可选优化
  • 如果你不想引入Linq命名空间,也可以通过一次遍历手动计算最大最小值,逻辑完全一致:
bool isApproximatelyEqual = true;
if (odds.Count > 1)
{
    double max = odds[0];
    double min = odds[0];
    foreach (var odd in odds)
    {
        if (odd > max) max = odd;
        if (odd < min) min = odd;
    }
    isApproximatelyEqual = (max - min) <= 2.0;
}
  • double类型存在浮点精度误差,如果后续需要更小的差值校验阈值,可以给判断条件加极小的容差,比如(max - min) <= 2.0 + 1e-9避免精度问题导致的误判,你当前允许差值为2的场景无需额外处理。

内容的提问来源于stack exchange,提问作者bbfl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 08:54:02