Compares two floats for order. : float « Data Type « Java






Compares two floats for order.

      
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */


/**
 * <p>Provides extra functionality for Java Number classes.</p>
 *
 * @author <a href="mailto:rand_mcneely@yahoo.com">Rand McNeely</a>
 * @author Stephen Colebourne
 * @author <a href="mailto:steve.downey@netfolio.com">Steve Downey</a>
 * @author Eric Pugh
 * @author Phil Steitz
 * @author Matthew Hawthorne
 * @author <a href="mailto:ggregory@seagullsw.com">Gary Gregory</a>
 * @author <a href="mailto:fredrik@westermarck.com">Fredrik Westermarck</a>
 * @since 2.0
 * @version $Id: NumberUtils.java 609475 2008-01-06 23:58:59Z bayard $
 */
public class Main {
  
  /**
   * <p>Compares two floats for order.</p>
   *
   * <p>This method is more comprehensive than the standard Java greater than,
   * less than and equals operators.</p>
   * <ul>
   *  <li>It returns <code>-1</code> if the first value is less than the second.
   *  <li>It returns <code>+1</code> if the first value is greater than the second.
   *  <li>It returns <code>0</code> if the values are equal.
   * </ul>
   *
   * <p> The ordering is as follows, largest to smallest:
   * <ul>
   * <li>NaN
   * <li>Positive infinity
   * <li>Maximum float
   * <li>Normal positive numbers
   * <li>+0.0
   * <li>-0.0
   * <li>Normal negative numbers
   * <li>Minimum float (<code>-Float.MAX_VALUE</code>)
   * <li>Negative infinity
   * </ul>
   *
   * <p>Comparing <code>NaN</code> with <code>NaN</code> will return
   * <code>0</code>.</p>
   * 
   * @param lhs  the first <code>float</code>
   * @param rhs  the second <code>float</code>
   * @return <code>-1</code> if lhs is less, <code>+1</code> if greater,
   *  <code>0</code> 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;
      }
  }
}

   
    
    
    
    
    
  








Related examples in the same category

1.Float class creates primitives that wrap themselves around data items of the float data type
2.convert Fahrenheit to Celsius back and forth with float
3.Floating-point comparisonsFloating-point comparisons
4.Float Double Time Float Double Time
5.Floating-point error diagnostics
6.Floating pioint comparisons
7.Min and Max values of data type float
8.Java float is 32 bit single precision type and used when fractional precision calculation is required.
9.Use toString method of Float class to convert Float into String.
10.Use Float constructor to convert float primitive type to a Float object.
11.Convert Java Float to Numeric Primitive Data Types
12.Convert Java String to Float Object
13.Java Float Comparison
14.Java Float isInfinite Method
15.Java Float isNaN Method
16.Java Float Wrapper Class
17.Compare Two Java float Arrays
18.Convert from float to String
19.Convert from String to float
20.Pass floats as string literals to a method
21.Converting a String to a float type Number
22.Check if a string is a valid number
23.Floating­Point Types
24.Float compare to Float compare to
25.Returns the sign for float value x
26.Gets the maximum of three float values.
27.Gets the minimum of three float values.
28.Clones a two dimensional array of floats.
29.Compare two float values with Float.floatToIntBits
30.Class for float-point calculations in J2ME applications CLDC