Provides extra functionality for Java Number classes.
* * @author Rand McNeely * @author Stephen Colebourne * @author Steve Downey * @author Eric Pugh * @author Phil Steitz * @author Matthew Hawthorne * @author Gary Gregory * @author Fredrik Westermarck * @since 2.0 * @version $Id: NumberUtils.java 609475 2008-01-06 23:58:59Z bayard $ */ public class Main { /** *Compares two floats for order.
* *This method is more comprehensive than the standard Java greater than, * less than and equals operators.
*-1
if the first value is less than the second.
* +1
if the first value is greater than the second.
* 0
if the values are equal.
* The ordering is as follows, largest to smallest: *
-Float.MAX_VALUE
)
* Comparing NaN
with NaN
will return
* 0
.
float
* @param rhs the second float
* @return -1
if lhs is less, +1
if greater,
* 0
if equal to rhs
*/
public static int compare(float lhs, float rhs) {
if (lhs < rhs) {
return -1;
}
if (lhs > rhs) {
return +1;
}
//Need to compare bits to handle 0.0 == -0.0 being true
// compare should put -0.0 < +0.0
// Two NaNs are also == for compare purposes
// where NaN == NaN is false
int lhsBits = Float.floatToIntBits(lhs);
int rhsBits = Float.floatToIntBits(rhs);
if (lhsBits == rhsBits) {
return 0;
}
//Something exotic! A comparison to NaN or 0.0 vs -0.0
//Fortunately NaN's int is > than everything else
//Also negzeros bits < poszero
//NAN: 2143289344
//MAX: 2139095039
//NEGZERO: -2147483648
if (lhsBits < rhsBits) {
return -1;
} else {
return +1;
}
}
}