我创建了一个基于双精度列表计算调和平均值的方法。 但是当我运行测试时,即使输出结果相同,它仍然会失败。Visual Studio 2008单元测试不成功
我的调和平均方法:
public static double GetHarmonicMean(List<double> parameters)
{
var cumReciprocal = 0.0d;
var countN = parameters.Count;
foreach(var param in parameters)
{
cumReciprocal += 1.0d/param;
}
return 1.0d/(cumReciprocal/countN);
}
我的测试方法:
[TestMethod()]
public void GetHarmonicMeanTest()
{
var parameters = new List<double> { 1.5d, 2.3d, 2.9d, 1.9d, 5.6d };
const double expected = 2.32432293165495;
var actual = OwnFunctions.GetHarmonicMean(parameters);
Assert.AreEqual(expected, actual);
}
运行测试后,将以下消息表示:
Assert.AreEqual失败。预计:< 2.32432293165495>。实际:< 2.32432293165495>。
对我来说都是相同的值。
有人可以解释一下吗?或者我做错了什么?
有可能是一些四舍五入错误消息文本回事。在另一个说明中,你的方法可以使用Linq:'return 1.0d/parameters.Average(d => 1.0d/d));' – 2010-04-23 13:08:11
很好,没想到用linq做这个。 – Gerbrand 2010-04-23 13:17:49