我正在运行一些代码,我需要比较两个2D数组以获得任何差异。我尝试使用以下代码行来检查和比较值,但每次测试失败= if(arr1[a][b] != arr2[a][b] || arr1[a][b] + .1 != arr2[a][b] || arr1[a][b] - .1 != arr2[a][b]) {
。
我知道这是因为||
语句而失败,因为满足了其中一个要求。所以我必须找到另一种方法来确定存储在数组中特定位置的double是否与并行位置中的另一个数组匹配。
这是我的完整代码:
int numberOfFailedCompares = 0;
for(int a = 0; a < 20; a++) {
int b = 0;
while(b < 20) {
if(arr1[a][b] != arr2[a][b] || arr1[a][b] + .1 != arr2[a][b] || arr1[a][b] - .1 != arr2[a][b]) {
numberOfFailedCompares++;
cout << numberOfFailedCompares << endl;
}
b++;
}
}
C ++中是否有一个语句允许我检查该值是否在+/- .1阈值范围内?像
这样的东西if(arrLocation1 (+/- .1) == arrLocation1) {
...
}
答案 0 :(得分:2)
“方差”表示“在X内”,而不是“等于加上X或某些东西减去X”。不是比较相等,而是比较你的方差更少/更大。因此,例如,测试+/- .1的方差:
if (b >= a-.1 && b <= a+.1)
答案 1 :(得分:1)
这个怎么样?
#define eps .1
...
if( fabs(x-y) <= eps )
...