我们有using duration = std::chrono::steady_clock::duration
。我想以最大的精度优雅地将持续时间转换为以秒为单位的两倍。
我发现了相反的方式(convert seconds as double to std::chrono::duration?),但这并没有帮助我找到答案。
或者,我最好选择一些标准函数double F(duration)
,该函数返回秒。
谢谢。
答案 0 :(得分:3)
只需:
std::chrono::duration<double>(d).count()
或者,作为功能:
template <class Rep, class Period>
constexpr auto F(const std::chrono::duration<Rep,Period>& d)
{
return std::chrono::duration<double>(d).count();
}
如果您需要std::chrono::duration
constructors无法完成的更复杂的转换,请使用std::chrono::duration_cast
。
答案 1 :(得分:1)
这对我来说是最直接的方式:
auto start = std::chrono::steady_clock::now();
/*code*/
auto end = std::chrono::steady_clock::now();
std::chrono::duration<double> diff = end - start;
std::cout << "Duration [seconds]: " << diff.count() << std::endl;
但是我不知道精确度……虽然这个方法非常精确。