Floating-point comparisons : float « Data Type « Java

Floating-point comparisons

Floating-point comparisons
 * Floating-point comparisons.
 * @author Ian F. Darwin, http://www.darwinsys.com/
 * @version $Id: FloatCmp.java,v 1.11 2004/02/09 03:33:56 ian Exp $
public class FloatCmp {
  final static double EPSILON = 0.0000001;
  public static void main(String[] argv) {
    double da = 3 * .3333333333;
    double db = 0.99999992857;

    // Compare two numbers that are expected to be close.
    if (da == db) {
      System.out.println("Java considers " + da + "==" + db);
    // else compare with our own equals method
    } else if (equals(da, db, 0.0000001)) {
      System.out.println("True within epsilon " + EPSILON);
    } else {
      System.out.println(da + " != " + db);

    // Show that comparing two NaNs is not a good idea:
    double d1 = Double.NaN;
    double d2 = Double.NaN;
    if (d1 == d2)
      System.err.println("Comparing two NaNs incorrectly returns true.");
    if (!new Double(d1).equals(new Double(d2)))
      System.err.println("Double(NaN).equal(NaN) incorrectly returns false.");

  /** Compare two doubles within a given epsilon */
  public static boolean equals(double a, double b, double eps) {
    if (a==b) return true;
    // If the difference is less than epsilon, treat as equal.
    return Math.abs(a - b) < eps;

  /** Compare two doubles, using default epsilon */
  public static boolean equals(double a, double b) {
    if (a==b) return true;
    // If the difference is less than epsilon, treat as equal.
    return Math.abs(a - b) < EPSILON * Math.max(Math.abs(a), Math.abs(b));


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.Float Double Time Float Double Time
4.Floating-point error diagnostics
5.Floating pioint comparisons
6.Min and Max values of data type float
7.Java float is 32 bit single precision type and used when fractional precision calculation is required.
8.Use toString method of Float class to convert Float into String.
9.Use Float constructor to convert float primitive type to a Float object.
10.Convert Java Float to Numeric Primitive Data Types
11.Convert Java String to Float Object
12.Java Float Comparison
13.Java Float isInfinite Method
14.Java Float isNaN Method
15.Java Float Wrapper Class
16.Compare Two Java float Arrays
17.Convert from float to String
18.Convert from String to float
19.Pass floats as string literals to a method
20.Converting a String to a float type Number
21.Check if a string is a valid number
22.Floating­Point Types
23.Float compare to Float compare to
24.Returns the sign for float value x
25.Gets the maximum of three float values.
26.Gets the minimum of three float values.
27.Compares two floats for order.
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