我正在尝试获取时间流逝百分比,我要做的是先检查一个时间间隔,我想获取该时间间隔中流逝时间的百分比,如果有意义

这是我的代码:

if ( ofGetElapsedTimeMillis() > lastTimeCheck + timePeriod ) {
    lastTimeCheck = ofGetElapsedTimeMillis();
    cout << "its time!" << endl;
}
float p = (float)ofGetElapsedTimeMillis() / (float)(lastTimeCheck + timePeriod);
cout << "time percentage: " << p << endl;

timePeriod = 3000,所以我每3秒更新一次lastTimeCheck变量,下面的代码行获取该时间间隔内的百分比,我的结果从0.5到0.9,但我需要p从0到1

提前致谢
r

最佳答案

您是说lastTimeCheck和lastTimeCheck + timePeriod之间的时间吗?那会是

float p = (float)(ofGetElapsedTimeMililis() - lastTimeCheck) / (float)(timePeriod);

您可能也可能会丢失其中一个浮标强制转换,但是我认为将其保留在其中是更安全且更容易理解的。但是,如果需要确保p小于或等于1,则应保存并重新使用上一次调用的ofGetTimeElapsedMillis值,否则您应该在此后显式检查p。
int millisNow = ofGetElapsedTimeMillis();
int millisSinceLastCheck = millisNow - lastTimeCheck;
if (millisSinceLastCheck > timePeriod) {
    lastTimeCheck = millisNow;
    millisSinceLastCheck = 0;
    cout << "it's time!" << endl;
}
float p = (float)(millisSinceLastcheck) / (float)(timePeriod);
cout << "time fraction: " << p << endl;

关于c++ - 如何获得耗时百分比?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5856607/

10-11 23:04
查看更多