查找浮点数数组中最接近的值



>我有一个浮点数数组。我还有另一个浮标。

我希望遍历数组并找到它的索引,其值最接近我的其他浮点数。我该怎么做?

简单代码:

float x = 2.25;
float closest_value=array[0];
float subtract_result = Math.Abs(closest_value - x) ;
for (int i = 1; i < array.length; i++)
{
    if (Math.Abs(array[i] - x) < subtract_result)
    {
        subtract_result = Math.Abs(array[i] - x);
        closest_value = array[i];
    }
}

LINQ 的一个可能的解决方案:

var index = arrayOfFloats
                .Select((i, f) => Tuple.Create(i, Math.Abs(f - myFloat)))
                .OrderBy(t => t.Item2)
                .First().Item1

它将数组中的每个数字投影到 [index, absolute difference] 元组,按差异排序并获取第一个(最小差异)项的索引。

var index = Array.IndexOf(array, array.OrderBy(a => Math.Abs(floatNum - a)).First());

最新更新