Получение значения продолжительности в двойном размере - PullRequest
3 голосов
/ 21 марта 2020

Допустим, у меня есть следующее значение продолжительности:

auto duration=12h+15min+99s+99ms;

Я хочу знать, сколько это часов (как двойное значение).

Когда я делаю auto hours=std::chrono::duration_cast<std::chrono::hours>(duration), я получить hours.count(), что int. Как правильно получить значение для всей длительности, выраженное как double?

Ответы [ 2 ]

6 голосов
/ 21 марта 2020
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();

Или, в качестве альтернативы, просто разделите вашу интегральную длительность на одну двойную hours:

cout << (12h+15min+99s+99ms)/1.0h << '\n';
2 голосов
/ 21 марта 2020
#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();

}
...