我有一个花车阵列。 我有另一个漂浮物。
我希望遍历数组并找到它的索引,其值最接近我的其他浮点数。我该怎么做?
答案 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());