Как получить процент прошедшего времени? - PullRequest
1 голос
/ 02 мая 2011

Я пытаюсь получить процент прошедшего времени, сначала я проверяю интервал времени, а я хочу получить процент прошедшего времени в этом интервале времени, если это имеет смысл

Вотмой код:

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 Ответ

2 голосов
/ 02 мая 2011

Вы имеете в виду время между lastTimeCheck и lastTimeCheck + timePeriod?Это было бы

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

Возможно, вы также можете потерять один из типов бросков с плавающей точкой, но я думаю, что безопаснее и не менее читабельно оставить их. Если вам нужно гарантировать, что p меньше или равноодин, однако, вы должны либо сохранить и повторно использовать значение 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;
...