# use-isnan

Require NaN predicates for equality-based tests

Equality comparisons and Array index searches with NaN have fixed results because NaN is unequal to every value, including itself.
Instead, you MUST call `.isNaN()` in the direct test or search predicate.

- Category: correctness
- Level: error
- Fix: suggestion
- Scope: module

## Reported

```ds title="main.ds"
function isMissing(value: float64): boolean {
    return value === 0.0 / 0.0;
}
```

## Accepted

```ds title="main.ds"
function isMissing(value: float64): boolean {
    return value.isNaN();
}
```

## Prior art

- [ESLint · use-isnan](https://eslint.org/docs/latest/rules/use-isnan)

[language/linter/src/rules/correctness/use_isnan.rs:8](https://github.com/destack-sh/destack/blob/main/language/linter/src/rules/correctness/use_isnan.rs#L8)
