2013-02-18 14 views
1

CppUnit에서 경계 테스트를 구현하려고합니다. 이 한도를 경계로 한도 값 자체를 확인하고 싶습니다.CppUnit을 사용한 C++의 경계 값 분석

상단 경계에 가능한 가장 작은 잉크 기록을 추가하고 싶습니다. 나는 내 한계에 엡실론을 추가하는 경우 double를 들어이 증가는, 그러나

numeric_limits<double>::epsilon() 

액세스 할 수 있습니다 나는 결과로 얻을 비수 (NaN) :

#include <stdio.h> 
#include <iostream> 
#include <limits> 
#include <math.h> 

using namespace std; 

const double WARNING_LIMIT = 8000.0; 

int main(void) { 

double warningLowerLimit = WARNING_LIMIT - numeric_limits<double>::epsilon(); 

if(warningLowerLimit < WARNING_LIMIT) { 
    cout << "lower" << endl; 
} 
else if (warningLowerLimit > WARNING_LIMIT) { 
    cout << "upper" << endl; 
} 
else if (fabs(warningLowerLimit) < 0.001) { 
    cout << "same" << endl; 
} 
else { 
    cout << "NaN" << endl; // <-- result 
} 

} 

누군가가 설명해 주시겠습니까, 왜 그 결과가 한도보다 낮지 않은가? 이

fabs(warningLowerLimit - WARNING_LIMIT) 

해야

안부

답변

0
else if (fabs(warningLowerLimit) < 0.001) { 
    cout << "same" << endl; 
} 

. 차이를 확인하지 않고 예를 들어 warningLowerLimit == WARNING_LIMIT 인 경우 cout << "NaN"에 도달합니다.