2014-02-08 60 views
0

我有一个浮动阵列。 我有另一个浮动。查找浮点数组中最接近的值?

我希望遍历数组,并找到最接近我的其他浮点值的索引。我将如何做到这一点?与LINQ

+0

我看到了几个类似的问题,但我想用浮漂处理可能会稍有改变所涉及的逻辑。 – Eogcloud

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

一种可能的解决方案:

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

它通过差突出各编号的数组中的[指数,绝对差]元组,排序并得到第一个(最小的差值)项的索引。

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