IsNan在C中是等价的

时间:2012-02-11 12:16:19

标签: javascript c

我有一段Javascript代码,我正在尝试将其转换为C代码。我有一个问题是将以下行转换为C:

var q = (!isNaN(dLat/dPhi)) ? dLat/dPhi : Math.cos(lat1);

你能告诉我C中的isNan相当吗? 感谢。

4 个答案:

答案 0 :(得分:5)

C在isnan中有一个math.h宏(这是C99的补充)。

仅当参数为NaN值时,宏才返回非零int

答案 1 :(得分:2)

不要觉得愚蠢,但它是:

isnan(x)

您还可以使用fpclassify并检查返回结果是否为FP_NAN

isnan最初是在3BSD中引入的,但在C99之前没有进入跨平台规范。 fpclasify出现在C99中。他们在math.h

Microsoft在_isnan中的MSVC中提供float.h

答案 2 :(得分:2)

初看起来,原作者看起来只想检查dPhi为0,所以你可能想要替换它。但是,如果您想逐字翻译代码,只需使用math.h中的isnan宏,如下所示:

#include <math.h>

double q = (!isnan(dLat/dPhi)) ? dLat/dPhi : cos(lat1);

答案 3 :(得分:2)

假设您的C实现是现代的(即除了MSVC以外的任何内容),您应该isnan中有math.h个可用内容。否则,if (x!=x)是检查NAN的一种非常好的方法,如果你不关心它修改浮点异常标志(几乎没有人使用或关心)。