如何找到给定变量的匹配项并在 2D 数组迭代时分配?

How to find match to given variable and assigning while 2D array iteration?

我有一个波纹管样式的数组 (2D)(只是一组虚拟数据);

int array [][]= {{1.0, 20.0},
                 {2.0, 40.0},
                 {3.0, 60.0},
                 {4.0, 80.0}}

我的程序中有另一个变量

double v = 3.2;

我现在想将数组中的col1值与值v进行比较。我想找到最接近v的值并将col2中的相应值分配为新变量new_v

所以对于上面的例子,我应该在下面;

因为v = 3.2并且最接近数组[3][1]位置的值3,所以我会分配如下;

double new_v = array[3][2]; 

你会如何解决这个问题?如果有人可以帮助我了解如何比较和找到最接近的值,那就太好了。 (如果使用 if 循环并查找是否完全匹配会更容易找到完全匹配,但这让我开始思考...)

如果能得到一些指点就好了!谢谢

我使用过 C#,因为您使用的似乎与该语言类似。但是,如果这让您难以理解我的方法,请随时告诉我哪种编程语言对您来说更容易理解。

我的方法如下:

        double currentClosest = array[0][0];

        for(int row = 0; row < array.Length; row++){
            if(Math.Abs(v - array[row][0]) < Math.Abs(v - currentClosest)){
                new_v = array[row][1];
                currentClosest = array[row][0];
            }
        }

for 循环仅遍历每一行。然后将所述行中第一列与给定值 v 之间的绝对差异与保存的 currentClosest 的相同差异进行比较。如果第一列中的这个新值比当前最接近的值更接近,则代码将该值保存为新的 currentClosest 并将 new_v 设置为第二列中的相应值。

你可以try the whole scenario here.

我希望这能回答你的问题。