Java斜率应该是不相等的

时间:2013-02-15 19:59:46

标签: java eclipse

我正在研究找到2个斜坡的程序,然后比较它们以确定它们是否相等。我正在使用双打。我发现,即使我的斜坡应该“相等”,它们也会稍微脱落,所以并没有表现出平等。例如,我得到一个1.0000000000000009和0.9999999999999999的斜率。所以它们在理论上应该是平等的,但它们不是。

我该怎么做才能解决这个问题?

2 个答案:

答案 0 :(得分:2)

如果你正在使用双打,你永远不会解决这个问题:十进制数的表示方式有局限性,这会在你的计算中积累,并给你这些微小的差异。一个好的代码审计实际上会警告你双打之间的平等。

处理它的一种方法是确保差异的绝对值低于你设定的某个限度。

Here's an article关于浮点数表示和比较的危险。

或者,您可以切换到更好的类来进行精确的数字处理,例如BigDecimal

答案 1 :(得分:0)

比较2个斜率你可以设置一些PRECISION_LEVEL,然后比较如下

final double PRECISON_LEVEL = 0.01;
if(Math.abs(slope1 - slope2) < PRECISION_LEVEL) {
    System.out.println("Equal");
} 
else {
    System.out.println("Not Equal");
}