为什么这段代码有时会返回NaN?

时间:2010-06-11 09:50:39

标签: iphone opengl-es nan math.h

这通常会返回NAN(“非数字”),具体取决于输入:

#define PI 3.1415f

GLfloat sineEaseIn(GLfloat ratio) {
 return 1.0f-cosf(ratio * (PI / 2.0f));
}

我尝试将PI缩小几位,看看是否有帮助。没有骰子。 然后我认为它可能是数据类型不匹配,但 float glfloat 似乎是等效的:

gl.h

typedef float           GLfloat;

math.h中

extern float  cosf( float );

这是一个铸造问题吗?

1 个答案:

答案 0 :(得分:2)

我怀疑以下其中一项正在进行中:

  • 您对ratio的输入值可能与您预期的不同,ratio本身可能是NaN
  • 您呼叫的cosf不是math.h
  • 中的{{1}}

否则,表达式似乎没有任何问题。