如何将 std::chrono::duration 转换为双倍(秒)?
How to convert std::chrono::duration to double (seconds)?
让我们using duration = std::chrono::steady_clock::duration
。我想优雅地以最大精度将持续时间转换为以秒为单位的两倍。
我找到了相反的方法(convert seconds as double to std::chrono::duration?),但它并没有帮助我找到它。
换句话说,我想要优化一些标准函数 double F(duration)
,即 returns 秒。
谢谢。
只需执行:
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, use std::chrono::duration_cast
无法满足的更复杂的转换。
这对我来说是最直接的方式:
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;
但是我不知道精度...虽然这个方法很精确。
让我们using duration = std::chrono::steady_clock::duration
。我想优雅地以最大精度将持续时间转换为以秒为单位的两倍。
我找到了相反的方法(convert seconds as double to std::chrono::duration?),但它并没有帮助我找到它。
换句话说,我想要优化一些标准函数 double F(duration)
,即 returns 秒。
谢谢。
只需执行:
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, use std::chrono::duration_cast
无法满足的更复杂的转换。
这对我来说是最直接的方式:
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;
但是我不知道精度...虽然这个方法很精确。