C#单元测试数字精度问题

C#单元测试数字精度问题,c#,visual-studio-2008,unit-testing,C#,Visual Studio 2008,Unit Testing,我正在测试将返回其均值/方差/标准差的基本数学函数。我面临的问题是,我无法获得函数返回的“期望值”的精度。例如,如果方差函数返回50.55566,即使我显式地将期望值设置为50.55566,它也会说它们是两个不同的双精度,单元测试失败 以下是单元测试的实际输出: Assert.AreEqual失败。预期:。实际值: 有人能给我们建议一个解决这个问题的方法吗?我正在使用内置的VisualStudio单元测试套件。谢谢。浮点(单/双)数字需要使用公差值进行测试。所以你可以说,如果两个数字在0.000

我正在测试将返回其均值/方差/标准差的基本数学函数。我面临的问题是,我无法获得函数返回的“期望值”的精度。例如,如果方差函数返回50.55566,即使我显式地将期望值设置为50.55566,它也会说它们是两个不同的双精度,单元测试失败

以下是单元测试的实际输出:

Assert.AreEqual失败。预期:。实际值:

有人能给我们建议一个解决这个问题的方法吗?我正在使用内置的VisualStudio单元测试套件。谢谢。

浮点(单/双)数字需要使用公差值进行测试。所以你可以说,如果两个数字在0.0001以内(互相容忍),就认为它们等于“/P>”。 在努尼特,你有。e、 g.以下过载相等,找到MSTest的等效过载

Assert.AreEqual( double expected, double actual, double tolerance,
                 string message );

更新:这应该是您在MSTest中需要的。试着看看它是否解决了您的问题。

确保您没有将
Double
s与
Decimal
s进行比较。50.5555556和50.5555566确实是两个不同的值!正是我需要的。谢谢