如何在 JUnit 中测试 float/double 是否相等?
How to test for equality of float/double in JUnit?
assertEquals(double,double)
方法已被弃用。 junit 中是否有另一种 and/or 不同的方法 - 或者我是否推出自己的小扩展
static boolean assertEquals(double d1, double d2) {
return Math.abs(d1 - d2) < 1e-8;
}
是的,请改用 assertEquals(double expected, double actual, double delta)
。
对于 JUnit,已经有函数。
但在其他类型的 Java 代码中,除了 JUnit 测试用例,
IBM has a recommendation 用于比较两个浮点数,使用除法而不是减法 - 这使得 select 一个适用于所有输入范围的 epsilon 更容易。
if (abs(a/b - 1) < epsilon)
至于 epsilon 的值,我会使用 this Wikipedia table 中给出的 5.96e-08
,或者可能是该值的 2 倍。
(参见 comparing float/double values using == operator)
assertEquals(double,double)
方法已被弃用。 junit 中是否有另一种 and/or 不同的方法 - 或者我是否推出自己的小扩展
static boolean assertEquals(double d1, double d2) {
return Math.abs(d1 - d2) < 1e-8;
}
是的,请改用 assertEquals(double expected, double actual, double delta)
。
对于 JUnit,已经有函数。
但在其他类型的 Java 代码中,除了 JUnit 测试用例, IBM has a recommendation 用于比较两个浮点数,使用除法而不是减法 - 这使得 select 一个适用于所有输入范围的 epsilon 更容易。
if (abs(a/b - 1) < epsilon)
至于 epsilon 的值,我会使用 this Wikipedia table 中给出的 5.96e-08
,或者可能是该值的 2 倍。
(参见 comparing float/double values using == operator)