c# 使用 double 但只有 2 个小数与 NUnit 测试数学运算

c# Use double but only with 2 decimals with NUnit Tests for Mathematical operations

我目前正在编写一个程序,用于计算基本几何对象(正方形、矩形、圆形、三角形)的面积和周长。为了检查这些操作是否正确,我正在使用 NUnit 来测试这些方法。

我正在使用 Double 进行这些操作,我的问题是我不想让这么多小数成为通过 NUnit 测试的正确预期值。

假设我有一个半径为 5 的圆,为了得到这个区域,我们这样做

5 * 5 * Math.Pi = 78.539816339744831d

这是我必须断言才能使测试通过,但是有什么方法可以限制我只能使用小数点后一位吗?所以我应该能够使测试通过值 78.5 而不是 78.539816339744831d

谢谢!

您可以通过这种方式在 Assert 中指定舍入范围 Is.EqualTo(78.5).Within(0.1)

使用Math.Round('1'是小数位数)

double result = Math.Round(this.GetFieldValue("value"), 1);

NUnit 对 Assert.AreEqual 有一个重载,它接受第三个参数,delta。

你可以这样做:

Assert.AreEqual(expected, actual, 0.1); 

断言“实际”在“预期”的 0.1 以内。