TestNG AssertEquals double - 适合双精度数的好数字吗?

kro*_*761 3 java testng assertions

使用 TestNG's Assert.assertEquals(double expected, double actual, double delta),使用以下数字作为增量的一个好数字(断言失败,因为没有增量)

AssertionError: expected [121.97] but found [121.96999999999998]
Run Code Online (Sandbox Code Playgroud)

我尝试使用1.01、 和.001,但三个都通过了。我希望保持成功的余量非常小(换句话说,如果“实际数字”(无论如何从我的角度来看)是 121.97 和 121.96,我希望测试失败。谢谢!

Grz*_*icz 5

如果您希望测试失败121.97并且121.96...尝试使用小于的增量
|121.97 - 121.96| = 0.01
怎么样:

final double DELTA = 0.001;
assertEquals(121.97, 121.96, DELTA);
Run Code Online (Sandbox Code Playgroud)

输出:

java.lang.AssertionError: expected [121.96] but found [121.97]
Expected :121.96
Actual   :121.97
Run Code Online (Sandbox Code Playgroud)

一般情况下...如果您希望断言对于a和失败b
请使用小于 的 delta |a - b|