获取持续时间值的两倍

问题描述 投票:0回答:2

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

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

我想知道多少小时(作为双值)。

[当我执行auto hours=std::chrono::duration_cast<std::chrono::hours>(duration)时,我会得到hours.count(),即int。在整个持续时间内获得以double表示的值的正确方法是什么?

c++ duration chrono
2个回答
2
投票
#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();

}

1
投票
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';
© www.soinside.com 2019 - 2024. All rights reserved.