public class FloatingCompareToBugs {
public static class FloatHolder implements Comparable<FloatHolder> {
float d;
public FloatHolder(float d) {
this.d = d;
}
@Override
public int compareTo(FloatHolder o) {
float d1 = d;
float d2 = o.d;
return d1 > d2 ? 1: d1 == d2 ? 0 : -1;
}
}
public static class FloatHolder2 implements Comparable<FloatHolder2> {
float d;
public FloatHolder2(float d) {
this.d = d;
}
@Override
public int compareTo(FloatHolder2 o) {
float diff = d - o.d;
return diff > 0 ? 1: diff < 0 ? 0 : -1;
}
}
public static class DoubleHolder implements Comparable<DoubleHolder> {
double d;
public DoubleHolder(double d) {
this.d = d;
}
@Override
public int compareTo(DoubleHolder o) {
double d1 = d;
double d2 = o.d;
return d1 < d2 ? -1: d1 == d2 ? 0 : 1;
}
}
}