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?

__ANSWER__:

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.

__ANSWER__:

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.

__ANSWER__:

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.

__ANSWER__:

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