为什么此代码有时会返回 NaN?
根据输入,这通常会返回 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< /strong>
extern float cosf( float );
这是选角问题吗?
This often returns NAN ("Not A Number") depending on input:
#define PI 3.1415f
GLfloat sineEaseIn(GLfloat ratio) {
return 1.0f-cosf(ratio * (PI / 2.0f));
}
I tried making PI a few digits smaller to see if that would help. No dice.
Then I thought it might be a datatype mismatch, but float and glfloat seem to be equivalent:
gl.h
typedef float GLfloat;
math.h
extern float cosf( float );
Is this a casting issue?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我怀疑以下情况之一正在发生:
ratio
输入值可能不是您所期望的,并且ratio
本身可能是NaN
cosf
不是math.h
中的那个,否则,您的表达式似乎没有任何问题。
I suspect that one of the following is afoot:
ratio
may not be what you expect it to be, andratio
itself is possiblyNaN
cosf
that you're calling isn't the one inmath.h
Otherwise, there doesn't appear to be anything wrong with your expression.