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

How to convert std::chrono::duration to double (seconds)?

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

我找到了相反的方法(convert seconds as double to std::chrono::duration?),但它并没有帮助我找到它。

换句话说,我想要优化一些标准函数 double F(duration),即 returns 秒。

谢谢。

只需执行:

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, use std::chrono::duration_cast 无法满足的更复杂的转换。

这对我来说是最直接的方式:

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;

但是我不知道精度...虽然这个方法很精确。