如何将std :: chrono :: duration转换为double(秒)?

时间:2019-08-17 17:31:12

标签: c++ c++11 chrono

我们有using duration = std::chrono::steady_clock::duration。我想以最大的精度优雅地将持续时间转换为以秒为单位的两倍。

我发现了相反的方式(convert seconds as double to std::chrono::duration?),但这并没有帮助我找到答案。

或者,我最好选择一些标准函数double F(duration),该函数返回秒。

谢谢。

2 个答案:

答案 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;

但是我不知道精确度……虽​​然这个方法非常精确。