2012-12-28 39 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,你可以這樣做:

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

更妙的是,使它成爲一個功能:

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

編輯:在MS股測試框架,請執行以下操作:

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