Tengo una variable ( float slope) que a veces tendrá un valor de nan cuando se imprima, ya que a veces ocurre una división entre 0.
Estoy tratando de hacer un if-else para cuando eso suceda. ¿Cómo puedo hacer eso? if (slope == nan)no parece funcionar.
objective-c
floating-point
teepusink
fuente
fuente

isnan(slope):; Swift para floatingPointType:slope.isNaNRespuestas:
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 isnanle dará más información, o puede leerlo todo en el estándar C)Alternativamente, puede detectar que el denominador es cero antes de hacer la división (o usarlo
atan2si solo va a terminar usandoatanen la pendiente en lugar de hacer algún otro cálculo).fuente
if (foo != foo)con algún código, soltaría un "WTF" muy audible.isnanparece un método mucho más claro y legible.isnanes mucho más claro.x != x, a menos que esté compilando con -ffast-math o similar, en cuyo caso se expande a una llamada a__isnanfo__isnand(porquex != xno funcionará correctamente bajo -ffast-math). Por lo que generalmente es mejor usarloisnan.__isnanfy se__isnandexpande?Nada es igual a
NaN... incluyéndose aNaNsí mismo. Así que compruebex != x.fuente
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.
fuente
En Swift, debe
slope.isNaNverificar si es un NaN.fuente