出于好奇,为什么以下测试失败?Math.Round,不是吗?
[Test]
public void MathRound()
{
Assert.AreEqual(7.13, Math.Round(7.125,2));
}
Run Code Online (Sandbox Code Playgroud)

从Round文档(看Round(double, int):
将双精度浮点值舍入到指定数量的小数位,并将中点值舍入到最接近的偶数(示例).
你的价值是完全7.125(有没有缺乏精确度在这里),它是在你四舍五入到两位数后的值的中点,使数字四舍五入为偶数.
如果你想要一个"向上"的中点舍入模式,你应该这样说:
Assert.AreEqual(7.13, Math.Round(7.125, 2, MidpointRounding.AwayFromZero));
Run Code Online (Sandbox Code Playgroud)
(无论如何,您通常应该Assert.AreEqual在比较double值时提供容差,但这是一个单独的讨论.)