在Java中,判斷兩個double是否相等不能直接使用==
運算符,因為浮點數在計算機中是以二進制形式存儲的,存在精度問題。應該使用Double.compare()
方法或者自定義一個誤差范圍進行比較。
Double.compare()
方法進行比較:double a = 0.1 + 0.2;
double b = 0.3;
if (Double.compare(a, b) == 0) {
System.out.println("a和b相等");
} else {
System.out.println("a和b不相等");
}
double a = 0.1 + 0.2;
double b = 0.3;
double epsilon = 1e-10;
if (Math.abs(a - b) < epsilon) {
System.out.println("a和b相等");
} else {
System.out.println("a和b不相等");
}
在這個例子中,我們定義了一個很小的誤差范圍epsilon
,如果兩個double的差的絕對值小于這個誤差范圍,則認為它們相等。這樣可以解決精度問題,但需要注意選擇合適的誤差范圍。