Skip to content

Commit 5553244

Browse files
authored
Add a double comparator (#17273)
1 parent 41cb5c2 commit 5553244

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.baeldung.comparedouble;
2+
3+
import java.util.Comparator;
4+
5+
public class DoubleComparator implements Comparator<Double> {
6+
private double epsilon;
7+
8+
public DoubleComparator(double epsilon) {
9+
this.epsilon = epsilon;
10+
}
11+
12+
@Override
13+
public int compare(Double d1, Double d2) {
14+
if (Math.abs(d1 - d2) < epsilon) {
15+
return 0; // equal
16+
} else if (d1 < d2) {
17+
return -1; // d1 is less than d2
18+
} else {
19+
return 1; // d1 is greater than d2
20+
}
21+
}
22+
}

core-java-modules/core-java-lang-3/src/test/java/com/baeldung/comparedouble/CompareDoubleUnitTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,4 +68,13 @@ private double getFirstDouble(double d1) {
6868
}
6969
return d1;
7070
}
71+
72+
@Test
73+
public void givenTwoEqualDoubleValues_whenUseComparator_thenReturnsZero() {
74+
double d1 = getFirstDouble(0);
75+
double d2 = .1 * 8;
76+
DoubleComparator comparator = new DoubleComparator(0.000001d);
77+
int result = comparator.compare(d1, d2);
78+
assertEquals(0, result);
79+
}
7180
}

0 commit comments

Comments
 (0)