C++ 将duration值获取为double

C++ 将duration值获取为double,c++,duration,chrono,C++,Duration,Chrono,比方说,我有以下持续时间值: auto duration=12h+15min+99s+99ms; 我想知道这是多少小时(双倍值) 当我执行auto hours=std::chrono::duration\u cast(duration)时,我会得到hours.count(),即int。获取整个持续时间的值(表示为双精度)的正确方法是什么 using namespace std::chrono; // Create a double-based hours duration unit usin

比方说,我有以下持续时间值:

auto duration=12h+15min+99s+99ms;
我想知道这是多少小时(双倍值)

当我执行
auto hours=std::chrono::duration\u cast(duration)
时,我会得到
hours.count()
,即
int
。获取整个持续时间的值(表示为双精度)的正确方法是什么
using namespace std::chrono;

// Create a double-based hours duration unit
using dhours = duration<double, hours::period>;

// Assign your integral-based duration to it
dhours h = 12h+15min+99s+99ms;

// Get the value
cout << h.count();
#包括 使用名称空间std::chrono_文本; int main(){ 自动持续时间=12.0h+15min+99s+99ms;
std::对我来说这听起来像是初等数学。一分钟是一小时的1/60,所以用分钟除以60就得到了小时数,然后把它加在总小时数上就得到了总小时数?起泡、冲洗、重复几秒钟和几毫秒。我看不到任何有效的理由来使用chrono库中的任何东西。哪一个p你不清楚这种简单的数学计算的艺术吗?是的,当然。我想问的是,是否有一种简单/默认的方法可以从计时器中获得我想要的值library@SamVarshavchik我想介绍一个反例——有一个初始状态,使用迭代器和sentinel在一个范围内迭代,并将一些逻辑/函数应用于它们是基本的。但是我们确实有
std::acculate
。我很清楚这个问题的意义。
cout << (12h+15min+99s+99ms)/1.0h << '\n';
#include<iostream>
#include<chrono>
using namespace std::chrono_literals;

int main() {


    auto duration = 12.0h+15min+99s+99ms;
    std::cout << std::chrono::duration_cast<std::chrono::duration<long double,std::ratio<3600,1>>>(duration).count();

}