Objective-C - 浮动检查nan

时间:2010-08-12 21:00:06

标签: objective-c floating-point

我有一个变量(float slope),有时在打印时会有一个nan值,因为有时会出现0除法。

我正试图在发生这种情况时做一个if-else。我怎样才能做到这一点? if (slope == nan)似乎不起作用。

4 个答案:

答案 0 :(得分:200)

两种或多或少等同的方式:

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

或者

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

man isnan会为您提供更多信息,或者您可以在C标准中阅读所有相关信息)

或者,您可以在进行除法之前检测到分母为零(或者如果您最终在斜率上使用atan2而不是进行其他计算,则使用atan )。

答案 1 :(得分:35)

没有任何东西等于NaN - 包括NaN本身。请检查x != x

答案 2 :(得分:5)

 if(isnan(slope)) {

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

希望这对你有用。

答案 3 :(得分:2)

在Swift中,您需要var _left = 25; var _right = 25; var _top = 210; var _bottom = 30; // [...] (inside dd object) pageMargins: [left, top, right, bottom], 来检查它是否是NaN。