float 나 double은 비교시 compare() 메서드를 사용한다.
이진 부동 소수점 산술에서는 정확한 값을 보장하기 어렵기 때문이다.
compare(a, b)는 a와 b의 값이 같으면 0을 반환하고, a가 b보다 크면 양수를 반환하고, a가 b보다 작으면 음수를 반환한다.
float f1 = 123.45676f;
float f2 = 123.45679f;
if (Float.compare(f1, f2) == 0) {
System.out.println("f1 == f2");
} else if (Float.compare(f1, f2) > 0) {
System.out.println("f1 > f2");
} else {
System.out.println("f1 < f2");
}
double d1 = 123.456755684654657;
double d2 = 123.456755684654656;
if (Double.compare(d1, d2) == 0) {
System.out.println("d1 == d2");
} else if (Double.compare(d1, d2) > 0) {
System.out.println("d1 > d2");
} else {
System.out.println("d1 < d2");
}