# Floating-point comparisons : float « Data Type « Java

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 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 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