如何在知道存在误差的情况下比较小数

本文关键字:情况下 比较 小数 误差 存在 | 更新日期: 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