54 votos

Objetivo C - float comprobación de nan

Tengo una variable ( float slope ) que a veces tendrá un valor de nan cuando se imprime desde una división por 0 a veces sucede.

Estoy tratando de hacer un if-else para cuando eso suceda. ¿Cómo puedo hacer eso? if (slope == nan) no parece funcionar.

149voto

Stephen Canon Puntos 58003

De dos maneras, que son más o menos equivalentes:

if (slope != slope) {
    // handle nan here
}

O

#include <math.h>
...
if (isnan(slope)) {
    // handle nan here
}

(man isnan le dará más información, o usted puede leer acerca de esto en el estándar de C)

Alternativamente, usted podría detectar que el denominador es cero antes de hacer la división (o uso atan2 si sólo vas a terminar usando atan sobre la pendiente en lugar de hacer algunos otros cómputo).

26voto

Chuck Puntos 138930

Nada es igual a NaN - incluyendo NaN sí. Así que revise x != x.

3voto

Pavitra Puntos 1996
 if(isnan(slope)) {

     yourtextfield.text = @"";
     //so textfield value will be empty string if floatvalue is nan
}
else
{
     yourtextfield.text = [NSString stringWithFormat:@"%.1f",slope];
}

Espero que esto funcionará para usted.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: