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

发布于 2024-09-05 10:02:51 字数 481 浏览 6 评论 0原文

根据输入,这通常会返回 NAN(“不是数字”):

#define PI 3.1415f

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

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

gl.h

typedef float           GLfloat;

ma​​th.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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

稚然 2024-09-12 10:02:51

我怀疑以下情况之一正在发生:

  • 您的 ratio 输入值可能不是您所期望的,并且 ratio 本身可能是 NaN
  • 您调用的 cosf 不是 math.h 中的那个,

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

I suspect that one of the following is afoot:

  • your input value to ratio may not be what you expect it to be, and ratio itself is possibly NaN
  • the cosf that you're calling isn't the one in math.h

Otherwise, there doesn't appear to be anything wrong with your expression.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文