如何获得经过时间的百分比?

时间:2011-05-02 11:31:10

标签: c++ time intervals openframeworks

我试图获得时间过去的百分比,我所做的是先检查一个时间间隔,他们我想得到该时间间隔内经过时间的百分比,如果这是有意义的

这是我的代码:

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

提前致谢 - rS

1 个答案:

答案 0 :(得分:2)

你的意思是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;