将std::chrono::steady_clock::time_point转换为长双精度



在计算时间变化后,如何将std::chrono::steady_clock::time_point转换为双精度。

int main()
{
std::chrono::steady_clock::time_point start, finish;

start = std::chrono::steady_clock::now();
finish = start;
while (true){
long double elapsedTime = std::chrono::duration_cast<std::chrono::nanoseconds>(finish -  start).count() / 1000000000;
std::cout << "Time elapsed (in seconds), " << elapsedTime << std::endl;
}


return 0;
}

编辑:它有效,但只返回0或1,我想要的是1.13715263724或之类的

首先,应该在循环开始时更新start,在循环结束时更新finish。要获得浮动值,1000000000必须替换为1000000000.0:

while (1) {
start = std::chrono::steady_clock::now();
long double elapsedTime = std::chrono::duration_cast<std::chrono::nanoseconds>(start -  finish).count() / 1000000000.0;
std::cout << "Time elapsed (in seconds), " << elapsedTime << std::endl;
finish = start;
}

最新更新