Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 目标-C-nan的浮点检查_Objective C_Floating Point - Fatal编程技术网

Objective c 目标-C-nan的浮点检查

Objective c 目标-C-nan的浮点检查,objective-c,floating-point,Objective C,Floating Point,我有一个变量(float slope),它在打印出来时有时会有一个值nan,因为有时会发生0除 我正在试着做一个if-else,当这种情况发生时。我该怎么做如果(斜率==nan)似乎不起作用。两种方法大致相当: if (slope != slope) { // handle nan here } 或 #包括 ... 如果(isnan(坡度)){ //在这里处理nan } (manisnan将为您提供更多信息,或者您可以在C标准中阅读有关它的所有信息) 或者,您可以在进行除法之前检测分

我有一个变量(
float slope
),它在打印出来时有时会有一个值nan,因为有时会发生0除


我正在试着做一个if-else,当这种情况发生时。我该怎么做<代码>如果(斜率==nan)似乎不起作用。

两种方法大致相当:

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

#包括
...
如果(isnan(坡度)){
//在这里处理nan
}
manisnan
将为您提供更多信息,或者您可以在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中,您需要执行
坡度。isNaN
检查它是否为NaN。

浮动或双精度的Objective-C可能重复:
isNaN(坡度)
;Swift for floatingPointType:
slope.isNaN
如果我遇到
If(foo!=foo)
在某些代码中,我会发出一声非常响亮的“WTF”
isnan
似乎是一种更清晰易读的方法。@squegy:对于熟悉浮点的人来说,他们读的是相同的。对于不是的人来说,是的,
isnan
更清楚。@AndrewHeinlein:不完全清楚。它扩展到
x!=x
,除非您使用-ffast math或类似工具进行编译,否则在这种情况下,它将扩展为调用
\uu isnanf
\uu isnand
(因为
x!=x
在-ffast math下无法正常工作)。所以通常最好使用
isnan
。但是,
\uu isnanf
\uu isnand
扩展到什么?@IulianOnofrei,因为NaN被定义为不等于任何东西,包括NaN。
 if(isnan(slope)) {

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