![JAR search and dependency download from the Maven repository](/logo.png)
comparators.FloatComparator Maven / Gradle / Ivy
package net.mintern.primitive.comparators;
/**
* A comparison function that imposes total ordering on {@code float} values.
*
* This is a {@code @FunctionalInterface} even though it isn't declared as one,
* so that it can be used in Java 6+.
*/
public interface FloatComparator {
/**
* Compares {@code f1} and {@code f2}. Returns a negative value to indicate
* that {@code f1 < f2}, 0 to indicate that {@code f1 == f2}, and a positive
* value to indicate that {@code f1 > f2}.
*
* Implementations of this method must maintain the following invariants:
*
* - {@code s(compare(x, y)) == -s(compare(y, x))}
*
- {@code s(compare(x, y)) == s(compare(y, z))} →
* {@code s(compare(x, y)) == s(compare(x, z))} (transitivity)
*
- {@code compare(x, y) == 0} →
* {@code s(compare(x, z)) == s(compare(y, z))} ∀ {@code z}
*
*
* where {@code s(x)} is defined as follows:
*
* - {@code x < 0}: -1
*
- {@code x == 0}: 0
*
- {@code x > 0}: 1
*
* Important Note
* A floating-point compare implementation must be careful to maintain
* total ordering, in particular when comparing -0.0, 0.0, @{code NaN},
* {@link Float#NEGATIVE_INFINITY}, and {@link Float#POSITIVE_INFINITY}
* values. See {@link Float#compareTo(Float)} for a valid example.
*
* @param f1 the first float to compare
* @param f2 the second float to compare
* @return a negative value, 0, or a positive value to indicate that
* {@code f1} is less than, equal to, or greater than {@code f2},
* respectively
*/
int compare(float f1, float f2);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy