【发布时间】:2018-07-10 10:10:07
【问题描述】:
我想计算一个持续时间的哪一部分包含在另一个持续时间中。有standard implementation for integers (6),但它给了我0(由于整数除法)以下示例:
auto s = 1s;
auto ms = 200ms;
std::cout << ms / s; // 0, but I want 0.2 here
有没有更优雅和通用的方法来计算这样的值,而不是下面的ugly solution?
#include <chrono>
#include <iostream>
int main()
{
using namespace std::chrono_literals;
auto s = 1s;
auto ms = 200ms;
const auto part = 1. * ms.count() / std::chrono::duration_cast<decltype(ms)>(s).count();
std::cout << part << '\n';
}
一种聪明的方法是使用1. / (s / ms);,但它不适合任何持续时间类型。
【问题讨论】: