float slope가끔 0으로 나누기가 발생하기 때문에 출력 될 때 가끔 nan 값을 갖는 변수 ( )가 있습니다.
그럴 때 if-else를 시도하고 있습니다. 어떻게 할 수 있습니까? if (slope == nan)작동하지 않는 것 같습니다.
답변:
다소 동등한 두 가지 방법 :
if (slope != slope) {
// handle nan here
}
또는
#include <math.h>
...
if (isnan(slope)) {
// handle nan here
}
( man isnan더 많은 정보를 제공하거나 C 표준에서 모든 내용을 읽을 수 있습니다)
또는 나누기를 수행하기 전에 분모가 0임을 감지 할 수 있습니다 (또는 다른 계산을 수행하는 대신 기울기에서 사용하는 atan2경우에만 사용 atan).
if (foo != foo)어떤 코드에서 우연히 만난 적이 있다면 나는 매우들을 수있는 "WTF"를 내놓을 것이다. 훨씬 더 명확하고 읽기 쉬운 방법 isnan처럼 보입니다 .
isnan훨씬 더 분명합니다.
x != x당신이에게 전화로 확장되는 경우 -ffast - 수학 또는 유사한로 컴파일하지 않는 한, __isnanf또는 __isnand(때문에 x != x-ffast - 수학에서 제대로 작동하지 않습니다). 따라서 일반적으로 isnan.
__isnanf과 __isnand에 확장?
if(isnan(slope)) {
yourtextfield.text = @"";
//so textfield value will be empty string if floatvalue is nan
}
else
{
yourtextfield.text = [NSString stringWithFormat:@"%.1f",slope];
}
이것이 당신을 위해 일하기를 바랍니다.