C++ 获取 1.#INF

C++ Getting 1.#INF

我正在尝试计算我的游戏的 FPS,但该值不稳定,所以我想实现线性插值以使显示的文本平滑。问题是我得到 1.# INF 值,我试过谷歌搜索但找不到真正的解释。

这里是插值函数:

float Lerp(float from, float to, float t)
{
    return (from*(1 - t) + to*t);
}

我如何计算 FPS:

void CalculateTime()
{
    deltaTime = (float)(SDL_GetTicks() - lastFrameTime) / 1000.0f; // this is around 0.02 each frame
    fps = 1.0f / deltaTime; // this is 50-60 every frame
    lastFps = Lerp(fps, lastFps, 0.5f); // lastFps is initialized at 60.0
    printf("%2.4f\n", lastFps);
}

一切似乎都很好..deltaTime、fps、lastFps 都是浮点数(我也试过 double 但没有区别)但是当 printf 执行时我得到 1.#INF

有什么想法吗?

最有可能的是,deltaTime 在某一时刻为零(由于绘制帧的时间不到一毫秒)。这给出了 fps = 1.0f / deltaTime; 的无穷大值。由于您进行插值的方式,一旦无穷大的值进入系统,lastFps 将永远是无穷大。