C ++检查double是否在另一个double的.1内(+/-)

时间:2016-03-02 01:18:55

标签: c++ arrays multidimensional-array compare

我正在运行一些代码,我需要比较两个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) {
... 
}

2 个答案:

答案 0 :(得分:2)

“方差”表示“在X内”,而不是“等于加上X或某些东西减去X”。不是比较相等,而是比较你的方差更少/更大。因此,例如,测试+/- .1的方差:

if (b >= a-.1 && b <= a+.1)

答案 1 :(得分:1)

这个怎么样?

#define eps .1
...
if( fabs(x-y) <= eps ) 
   ...