如何使用二进制获取最接近的数字

时间:2016-05-14 15:43:29

标签: c#

我正在尝试编写一个关于检查2个数组中的数字是否相同的代码,如果没有,那么我想要最接近(但不高于)的数字。由于我是新手,我真的不知道该怎么做。

如果我试试这个:

int slice = 0;

for (int v = 0; v < m; v++)    // m is the length of the array a
{
    if (a[v] == Array.BinarySearch(b, a[v]))    // b is array b
    {
        slice += 5;
    }
}

如果我试试这个,看起来它们不一样,即使我在数组中加入相同的数字来测试它。

所以基本上两个问题是:

  • 这个
  • 出了什么问题
  • 有一种简单的方法来获得最接近的号码吗?

编辑:我自己已经尝试了一段时间,而且我越来越近,代码看起来像这样:

int a=0;
        for (int v =0; v<m; v++)
        {
            if (b[v] >= c[~Array.BinarySearch(c, b[v]) - 1])
            {
                a+= b[v] - c[~Array.BinarySearch(c, b[v]) - 1];
            }

            else
            {
                a+= b[v];
            }
        }

所以让我们说在数组b中包含以下数字:{4,5,6,7,8,9,10}和c {2,3,4,5}。我正在浏览b的所有数字。所以前4:比每个c的数字大4(或等于)?答案是肯定的,所以它是4-4 = 0,我把0添加到a。如果有一个小于c的每个数字的数字,那么我只是将该数字添加到a。而且每个号码都这样做。我现在的问题是:我得到一个超出范围的异常,等于和小于(6和更低),而大于数字(例如在这种情况下:6或更高)。不知道为什么我有任何想法出现这个问题?

0 个答案:

没有答案
相关问题