2012-12-28 1 views
9

값을 계산하는 두 가지 방법이 있습니다. 두 가지 방법이 실행되면, 나는 다음과 같은 얻을 :오류가 있음을 알고있는 소수를 비교하는 방법

decimal a = 145.2344; 
decimal b = 145.2345; 

내가 단위 테스트가 있습니다

Assert.AreEqual(a,b); 

가 나는 +/- 0.0001 차이를 설명 할 수 있어야합니다. 이 규칙을 어떻게 추가 할 수 있습니까?

+0

어떤 단위 테스트 프레임 워크/분석 라이브러리를 사용하고 있습니까? – nemesv

+0

MS 단위 테스트 프레임 워크 – RJP

답변

4

간단한 :

if (Math.Abs(a-b) < 0.0001m) 
    // equal 
12

NUnit's constraint model, 당신이 할 수 있습니다 :

void AssertDiff(decimal a, decimal b, decimal diff = 0.0001) { 
    Assert.That(Math.Abs(a-b), Is.LessThan(diff)); 
} 

편집 : MS 단위에서 더 좋은

Assert.That(Math.Abs(a-b), Is.LessThan(0.0001M)); 

을, 그것을 기능을 테스트 프레임 워크 :

void AssertDiff(decimal a, decimal b, decimal diff = 0.0001) { 
    Assert.IsTrue(Math.Abs(a-b) < diff); 
} 
+0

은 C#입니까 ?? 찾을 수 없습니다. 그 방법 ... –

+1

@MichaelBray NUnit의 2.4 * NUnit의 * 제약 모델 *입니다. 당신은 [여기] (http://www.nunit.org/index.php?p=constraintModel&r=2.4.8)에 대해 읽을 수 있습니다. – dasblinkenlight

+0

@MichaelBray 아, 방금 OP의 코멘트를 발견했습니다. 정말 고마워요! 나는 내 대답을 편집했다. – dasblinkenlight

관련 문제