【发布时间】:2016-04-20 17:32:59
【问题描述】:
虽然我意识到这可能是许多相同的问题之一,但我似乎无法弄清楚如何正确使用 std::chrono。这是我拼凑起来的解决方案。
#include <stdlib.h>
#include <iostream>
#include <chrono>
typedef std::chrono::high_resolution_clock Time;
typedef std::chrono::milliseconds ms;
float startTime;
float getCurrentTime();
int main () {
startTime = getCurrentTime();
std::cout << "Start Time: " << startTime << "\n";
while(true) {
std::cout << getCurrentTime() - startTime << "\n";
}
return EXIT_SUCCESS;
}
float getCurrentTime() {
auto now = Time::now();
return std::chrono::duration_cast<ms>(now.time_since_epoch()).count() / 1000;
}
由于某种原因,这只会返回整数值作为差值,该差值以每秒 1 的速率递增,但从任意值开始,通常为负值。
我做错了什么?有更好的方法吗?
【问题讨论】:
-
两个整数参数相除的结果是一个整数值。
-
@SergeyA 这修复了结果不是浮点数,但它仍然从错误的数字开始。
-
return std::chrono::duration_cast<ms>(now.time_since_epoch()).count() / 1000.0F; -
@Arkathorn 如果您计算
std::chrono::time_points 上的差异,您应该会获得更好的精度。 -
您应该使用浮点表示返回自定义的秒持续时间,而不是除以
1000。