81 votes

Objectif C - flotteur de vérification pour nan

J'ai une variable ( float slope ) que, parfois, aura une valeur de nan lors de l'impression depuis une division par 0 arrive parfois.

Je suis en train de faire un if-else pour quand ça arrive. Comment puis-je le faire? if (slope == nan) ne semble pas fonctionner.

210voto

Stephen Canon Points 58003

De deux manières, qui sont plus ou moins équivalentes:

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

Ou

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

(man isnan vous donnera plus d'informations, ou vous pouvez lire tout ça dans le C standard)

Sinon, vous pouvez détecter que le dénominateur est égal à zéro avant de faire la fracture (ou utiliser atan2 si vous êtes juste de finir l'aide d' atan sur la pente au lieu de faire des autres de calcul).

36voto

Chuck Points 138930

Rien n'est égal à NaN - dont NaN lui-même. Donc, vérifiez x != x.

6voto

Pavitra Points 1996
 if(isnan(slope)) {

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

Espérons que cela fonctionnera pour vous.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X