# How do you test to see if a double is equal to NaN? – Dev

The best answers to the question “How do you test to see if a double is equal to NaN?” in the category Dev.

QUESTION:

I have a double in Java and I want to check if it is `NaN`.
What is the best way to do this?

Try `Double.isNaN()`:

Returns true if this Double value is a Not-a-Number (NaN), false otherwise.

Note that [`double.isNaN()`] will not work, because unboxed doubles do not have methods associated with them.

Use the static `Double.isNaN(double)` method, or your `Double`‘s `.isNaN()` method.

``````// 1. static method
if (Double.isNaN(doubleValue)) {
...
}
// 2. object's method
if (doubleObject.isNaN()) {
...
}
``````

Simply doing:

``````if (var == Double.NaN) {
...
}
``````

is not sufficient due to how the IEEE standard for NaN and floating point numbers is defined.

You can check for NaN by using `var != var`. `NaN` does not equal `NaN`.

EDIT: This is probably by far the worst method. It’s confusing, terrible for readability, and overall bad practice.

You might want to consider also checking if a value is finite via `Double.isFinite(value)`. Since Java 8 there is a new method in `Double` class where you can check at once if a value is not NaN and infinity.

``````/**
* Returns {@code true} if the argument is a finite floating-point
* value; returns {@code false} otherwise (for NaN and infinity
* arguments).
*
* @param d the {@code double} value to be tested
* @return {@code true} if the argument is a finite
* floating-point value, {@code false} otherwise.
* @since 1.8
*/
public static boolean isFinite(double d)
``````