Pular para o conteúdo principal

unnecessary_nan_comparison

Detalhes sobre o diagnóstico 'unnecessary_nan_comparison' produzido pelo analisador do Dart.

A double can't equal 'double.nan', so the condition is always 'false'.

A double can't equal 'double.nan', so the condition is always 'true'.

Descrição

#

O analisador emite este diagnóstico quando um valor é comparado com double.nan usando == ou !=.

O Dart segue o padrão de ponto flutuante IEEE 754 para a semântica das operações de ponto flutuante, que estabelece que, para qualquer valor de ponto flutuante x (incluindo NaN, infinito positivo e infinito negativo):

  • NaN == x é sempre falso
  • NaN != x é sempre verdadeiro

Por isso, comparar qualquer valor com NaN não faz sentido, pois o resultado já é conhecido (com base no operador de comparação usado).

Exemplo

#

O código a seguir produz este diagnóstico porque d está sendo comparado com double.nan:

dart
bool isNaN(double d) => d == double.nan;

Correções comuns

#

Use o getter double.isNaN no lugar:

dart
bool isNaN(double d) => d.isNaN;

Encontrou essa página sem tradução ou que precisa de correção? Abra uma issue e nos ajude a manter esse site em PT-BR para ajudar pessoas como você.