【问题标题】:How to convert std::chrono::duration to double (seconds)?如何将 std::chrono::duration 转换为双倍(秒)?
【发布时间】:2019-08-17 17:31:12
【问题描述】:

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

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

换一种说法,我想要一些标准函数double F(duration),它返回秒数。

谢谢。

【问题讨论】:

    标签: c++ c++11 chrono


    【解决方案1】:

    简单地做:

    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。

    【讨论】:

    • 如何在不指定std::chrono::seconds的情况下在几秒钟内得到它?
    【解决方案2】:

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

    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;
    

    但是我不知道精度...虽然这种方法非常精确。

    【讨论】:

    • 这怎么知道是秒?
    猜你喜欢
    • 2013-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 2016-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多