如何在知道存在误差的情况下比较小数
本文关键字:情况下 比较 小数 误差 存在 | 更新日期: 2023-09-27 17:49:55
我有两种不同的方法来计算值。两个方法运行后,得到如下结果:
decimal a = 145.2344;
decimal b = 145.2345;
我有一个单元测试:
Assert.AreEqual(a,b);
我希望能够解释+/- 0.0001的差异。我如何添加这个规则?
在NUnit的约束模型中,你可以这样做:
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);
}
Simple:
if (Math.Abs(a-b) < 0.0001m)
// equal