unsigned int deltaTime = now() - last();
unsigned int freq = getFreq();
float timeOfGap = float(deltaTime) / float(freq);
ASSERT(0.0f <= timeOfGap, "WHAT?");
我的程序结果非常奇怪。我没有捕捉到发生的场景,但是我有一份日志记录显示至少出现了多次。
两个从无符号整数转换而来的浮点数相除可能会导致负浮点数结果吗?
好的,谢谢大家。很高兴看到你们的关注。 让我尝试添加一些描述。这将对您有所帮助。
我正在为一个在线游戏工作,在服务了数亿次游戏后,这种情况很少但频繁地出现。我无法调试或捕捉到确切的错误,但它在数据库错误消息中被记录下来。
如您所注意,timeOfGap应该为NaN,但日志没有精确提示该值。 timeOfGap是按以下方式累积的;
mTotalFrameRateTimeAsASecond += timeOfGap;
这个程序记录了mTotalFrameRateTimeAsASecond,它是一个负值。但除了这个符号是负数外,它是正确的值。这意味着,如果我将最终值除以帧速率,它就能正确指示时间。一个假设的播放时间是500秒,在每秒60帧的情况下,它是-30000。
timeOfGap
吗?也许它是 NAN。 - Mihran Hovsepyan