目标C – 检查nan

我有一个variables( float slope ),有时会打印出来的值为nan,因为有时发生0除法。

我正在尝试做一个if-else的时候发生。 我怎样才能做到这一点? if (slope == nan)似乎没有工作。

两种方式,或多或less是等价的:

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

要么

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

man isnan会给你更多的信息,或者你可以阅读所有关于它的C标准)

或者,您可以在分割之前检测分母是否为零(或者如果您只是最后使用斜坡上的atan而不是进行其他计算,则使用atan2 )。

没有什么等于NaN – 包括NaN本身。 所以检查x != x

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

希望这会为你工作。

在Swift中,你需要做slope.isNaN来检查它是否是NaN。