Objective-C - проверка поплавка для нан

У меня есть переменная (float slope), которая иногда будет иметь значение nan при распечатке, так как иногда происходит деление на 0.

Я пытаюсь сделать if-else, когда это произойдет. Как я могу это сделать? if (slope == nan) не работает.

Ответ 1

Два способа, которые более или менее эквивалентны:

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

или

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

(man isnan предоставит вам больше информации или вы сможете прочитать все об этом в стандарте C)

В качестве альтернативы вы можете обнаружить, что знаменатель равен нулю, прежде чем вы разделите его (или используйте atan2, если вы просто закончите с помощью atan на склоне, а не выполняете другие вычисления).

Ответ 2

Ничто не равно NaN - включая NaN. Поэтому проверьте x != x.

Ответ 3

 if(isnan(slope)) {

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

Надеюсь, это сработает для вас.

Ответ 4

В Swift вам нужно сделать slope.isNaN, чтобы проверить, является ли это NaN.