在浮点数组中找到最接近的值?

时间:2014-02-08 17:17:12

标签: c# arrays loops double

我有一个花车阵列。 我有另一个漂浮物。

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

3 个答案:

答案 0 :(得分:4)

简单代码:

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];
    }
}

答案 1 :(得分:3)

LINQ的一种可能解决方案:

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

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

答案 2 :(得分:2)

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