2012-12-28 16 views
9

Bir değeri hesaplamanın iki farklı yolu var. Her iki yöntem, yayınlandıktan sonra aşağıdaki alıyorum:Hata payı olduğunu bilerek ondalık sayıları nasıl karşılaştırılır

decimal a = 145.2344; 
decimal b = 145.2345; 

Ben bir birim testi:

Assert.AreEqual(a,b); 

Ben +/- 0,0001 farkı dikkate almak isterler. Bu kuralı nasıl ekleyebilirim?

+0

Hangi birim sınama çerçevesi/asseveration kitaplığı kullanıyorsunuz? – nemesv

+0

MS 'Birim Test Çerçevesi – RJP

cevap

4

Basit:

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

NUnit's constraint model olarak, bunu yapabilirsiniz:

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

DÜZENLEME: MS Ünitesinde Daha iyisi

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

, bunu bir işlev yapmak Test Framework, bunu yapın:

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

bu C# ?? Bulamıyorum ... Bu yöntem ... –

+1

@MichaelBray Bu, NUnit 2.4'de tanıtılan NUnit * kısıtlama modelidir. Bu konuda okuyabilirsiniz [burada] (http://www.nunit.org/index.php?p=constraintModel&r=2.4.8). – dasblinkenlight

+0

@MichaelBray Ah, OP'in yorumunu fark ettim, çok teşekkür ederim! Cevabımı düzenledim. – dasblinkenlight

İlgili konular