Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用二进制获得最接近的数字_C# - Fatal编程技术网

C# 如何使用二进制获得最接近的数字

C# 如何使用二进制获得最接近的数字,c#,C#,我正在尝试编写一个代码来检查两个数组的数字是否相同,如果不相同,那么我想要最接近(但不高于)的数字。因为我是新手,我真的不知道怎么做 如果我尝试这样做: 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 +=

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

如果我尝试这样做:

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 slice=0;
for(int v=0;v
如果我尝试这样做,即使我在数组中输入相同的数字来测试,它们似乎也不一样

所以基本上这两个问题是:

  • 这出了什么问题
  • 有没有一种简单的方法可以得到最接近的数字
编辑:我自己已经尝试了一段时间,我越来越接近了,代码如下所示:

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];
            }
        }
inta=0;
对于(int v=0;v=c[~Array.BinarySearch(c,b[v])-1])
{
a+=b[v]-c[~Array.BinarySearch(c,b[v])-1];
}
其他的
{
a+=b[v];
}
}

假设在数组b中包含以下数字:{4,5,6,7,8,9,10}和在c{2,3,4,5}。我要看所有b的数字。所以前4:4比c的每一个数字都大(或相等)吗?答案是肯定的,所以它是4-4=0,我把0加到a。如果有一个数小于c的每一个数,那么我将把这个数加在a上。我对每个数字都这么做。现在我遇到的问题是:我得到了一个超出范围的异常,它等于或小于(6或更低),而大于数字(例如,在本例中:6或更高)。不知道我为什么会遇到这个问题有什么想法吗?

通过相同的数组,您希望数组中的数字以相同的顺序排列,还是仅仅是相同的数字?如果你能解释“最近的”数字是什么意思,也就是说,如果让我们假设数组中有一个以上的数字不存在,你能得到多少最近的数字match@Adi我的意思是,在数组b中,数组A的数字可能相同,我想得到这些数字。如果b中没有相同的数字,那么我想得到最接近的数字,例如:如果没有41,但是有40,那么它将给出40。我用一个循环,因为我想一次检查所有的数字,你能提供一个更详细的例子吗?假设A=[1,2,3,4,5]和B=[10,11,12,13,14,15]。你希望得到什么回报?只有10,因为它最接近5?或者可能是因为它们都与同一索引的值相差10?@PiotrWolkowski我添加了代码,因为我也一直在忙着这么做。让我们举个例子,如果我们看B,A的最接近的数字是5,所以它是10-5,11-5,12-5等等,我把这些数字加起来。如果这个数小于A的每个数,那么我将把这个数加起来。我对代码进行了编辑,顺便问一下,如果使用相同的数组,代码可能会更清晰。您希望数组中的数字以相同的顺序排列,还是仅仅是相同的数字?如果你能解释“最近的”数字是什么意思,也就是说,如果让我们假设数组中有一个以上的数字不存在,你能得到多少最近的数字match@Adi我的意思是,在数组b中,数组A的数字可能相同,我想得到这些数字。如果b中没有相同的数字,那么我想得到最接近的数字,例如:如果没有41,但是有40,那么它将给出40。我用一个循环,因为我想一次检查所有的数字,你能提供一个更详细的例子吗?假设A=[1,2,3,4,5]和B=[10,11,12,13,14,15]。你希望得到什么回报?只有10,因为它最接近5?或者可能是因为它们都与同一索引的值相差10?@PiotrWolkowski我添加了代码,因为我也一直在忙着这么做。让我们举个例子,如果我们看B,A的最接近的数字是5,所以它是10-5,11-5,12-5等等,我把这些数字加起来。如果这个数小于A的每个数,那么我将把这个数加起来。顺便说一句,我编辑了代码,也许它更清晰