Java 两个双数组的相等性
我在测试两个双数组是否相等时遇到了问题,我编写了这个方法Java 两个双数组的相等性,java,arrays,Java,Arrays,我在测试两个双数组是否相等时遇到了问题,我编写了这个方法 public static boolean equalsArray(double[]a,double[]b){ if(a.length!=b.length) return false; else{ for(int i=0;i<a.length;i++) if(a[i]!=b[i]) return false; } retu
public static boolean equalsArray(double[]a,double[]b){
if(a.length!=b.length)
return false;
else{
for(int i=0;i<a.length;i++)
if(a[i]!=b[i])
return false;
}
return true;
}
它适用于int数组,但不适用于double数组
非常感谢比较双值的最佳方法是:
double a = 1.000000;
double b = 1.000009;
if(Math.abs(a-b)<=0.00000001){
System.out.println("equal");
}
双a=1.000000;
双b=1.000009;
如果(Math.abs(a-b)在我的例子中返回true
。顺便说一句,你可以使用Arrays.equals()
这是你的实际测试用例吗?还是仅仅是一个例子?它应该返回true
。我在这里没有看到问题。你发布的代码片段工作得很好(在前面提到的例子中它返回true)。它现在可以工作了,感谢lot1)问题是比较两个双精度数组,而不仅仅是两个双精度数组。2) 我不会调用打印结果的东西,而不是返回数组中的“最佳方式”@DennisMeng,我们也在比较两个双精度。像这样比较两个替身是不可取的。
double a = 1.000000;
double b = 1.000009;
if(Math.abs(a-b)<=0.00000001){
System.out.println("equal");
}