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的每个数,那么我将把这个数加起来。顺便说一句,我编辑了代码,也许它更清晰