Java双重比较

Java双重比较,java,double,Java,Double,是否有用于进行双重比较的java库? e、 g 我开始的每一个项目最终都会重新实现它,并复制粘贴代码和测试 注意:IBM推荐以下内容是为什么使用第三方JAR更好的一个很好的例子: “如果您不知道基础测量的规模,请使用 测试“abs(a/b-1)

是否有用于进行双重比较的java库? e、 g

我开始的每一个项目最终都会重新实现它,并复制粘贴代码和测试

注意:IBM推荐以下内容是为什么使用第三方JAR更好的一个很好的例子:

“如果您不知道基础测量的规模,请使用 测试“abs(a/b-1)
我怀疑很多人会想到这一点,并说明即使是简单的代码也可能是次优的。

有。

在标准Java库中,没有解决您的问题的方法实际上我建议您遵循Joachim的链接并使用该库,它非常适合您的需要,尽管我的建议是创建一个UTILS库,你可以在你的问题中添加常用的方法,但是对于你的问题的不同实现,你应该考虑一下:


请随意询问任何其他歧义

您应该避免使用任何使用天真的“最大绝对差异”方法(如番石榴)的库。正如Bruce Dawson的优秀文章所详述的,它非常容易出错,因为它只适用于非常有限的值范围。一种更稳健的方法是使用相对差异或ULP进行近似比较


据我所知,唯一实现正确近似比较算法的库是
apache.common.math

,我不懂。您正在使用非常短的一行代码进行比较。为什么您需要将其包装在一个方法中?为什么您需要一个进行双重比较的库?没有意义,因为标准语言已经做到了这一点。把你的方法放在一个罐子里,在需要的时候导入,你就完成了。我为许多不同的人编写代码,出于知识产权的原因,我不能使用同一个罐子。另外,我的代码总是有问题。这个问题+答案有你需要的:我不赞成用比原始代码长的函数名替换代码。警告:Guava的
fuzzyCompare()
使用天真的“最大绝对差异”方法,这是非常不可靠的,因为它只适用于非常有限的值范围,这是由于浮动中固有的舍入和取消。我不会用它的。有关更多细节,请参阅相关问题,或者(我的建议)阅读本文,了解浮点比较这一看似简单的问题的复杂性。
public static boolean greaterThanOrEqual(double a, double b, double epsilon){
     return a - b > -epsilon;
}