我運行位的代碼,其中我需要比較兩個2D陣列以任何方差。我用下面的代碼行檢查和比較值的嘗試,但測試失敗,每次= if(arr1[a][b] != arr2[a][b] || arr1[a][b] + .1 != arr2[a][b] || arr1[a][b] - .1 != arr2[a][b]) {
。C++檢查如果一個雙距離的0.1另一個雙(+/-)
我知道這是因爲||
聲明的失敗,因爲其中一個要求得到滿足。所以我必須找到另一種方法來確定存儲在數組中特定位置的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++中的聲明,這將讓我檢查值是+/- 0.1閾值之內:
這裏是我完整的代碼?類似於
if(arrLocation1 (+/- .1) == arrLocation1) {
...
}
「每次都失敗」是指它從來不是真的,當它應該是,或者它永遠是真的,當它不應該或什麼? – immibis
另外,1.0是否應該匹配1.05?因爲這些距離比0.1更接近,但它們之間的距離並不完全相等,因此您的測試精確度爲0.1。 – immibis
另外,如果數字是0.999999999999999分開或1.000000000000001分開? – immibis