Pregunta Objetivo C - comprobación flotante para nan


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

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


74
2017-08-12 21:00


origen


Respuestas:


Dos formas, 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 puede leer todo al respecto en el estándar C)

Alternativamente, puedes detectar que el denominador es cero antes de dividir (o usar atan2 si solo vas a terminar usando atan en la pendiente en lugar de hacer algún otro cálculo).


193
2017-08-12 21:03



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


32
2017-08-12 21:03



 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 funcione para usted.


4
2017-10-01 11:31



En Swift, tienes que hacer slope.isNaN para verificar si es un NaN.


1
2018-02-24 20:22