如何将标准::时间::d转换为双倍(秒)?
How to convert std::chrono::duration to double (seconds)?
让我们有using duration = std::chrono::steady_clock::duration
.我想优雅地将持续时间转换为以秒为单位的两倍。
我找到了相反的方法,但它并没有帮助我找到它。
或者表达,我想要一些最好的 std 函数double F(duration)
,它返回秒。
只需执行:
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
构造函数无法满足的更复杂的转换,请使用std::chrono::duration_cast
。
将std::chrono::duration
转换为任何数字"计数"看似简单!
您可以将任意两个std::chrono::duration
除以有效地 获取计数。
给定任何周期和任何整数表示的持续时间d
:
using std::chrono_literals;
// Want to know how many seconds? Divide by one second!
std::int64_t int_seconds = d / 1s;
double fp_seconds = d / 1.0s;
如图所示,两个持续时间的周期并不重要。 生成的类型将是两个持续时间的通用类型。
这对我来说是最直接的方法:
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;
但是我不知道精度...虽然这种方法非常精确。
相关文章:
- 如何正确将字符串转换为标准::时间::system_clock::time_point?
- 如何在 C++11 中将标准::字符串转换为标准::u32字符串?
- 从标准::字符串到标准::矢量<bool>的快速转换
- 将手写循环转换为标准库调用
- C++ - 转换标准::浮点数组的字符串
- 如何将 tbb concurrent_hash_map转换为常规标准::地图?
- 从常量字符*、字符*参数到标准::字符串的直接转换接口
- 热将标准::__cxx11::字符串转换为标准::字符串
- C++17 编解码器在将标准::字符串转换为标准::字符串时抛出"bad conversion"
- 如何将 C 数组转换为标准::initializer_list?
- 从双秒到标准::时间:steady_clock::d的简短转换?
- 标准是否阻止在可变参数模板中使用足够小的文本值缩小文本转换范围
- 常量转发引用给出错误 C2440:"正在初始化":无法从"常量标准::字符串"转换为"常量标准::字符串 &&"
- 将 boost:::chrono::steady_clock::time_point 转换为标准::时间::steady
- 如何将标准::string_view转换为双倍?
- 如何在不复制数据的情况下将 cv::Mat 转换为 2d 标准::矢量
- 快速转换标准::时间::time_point 到/从标准::字符串
- 转换标准::basic_string<wchar_t>和标准::basic_string<uint16_t>
- 转换标准::字符串到字符
- 当我使用 win32 发送消息发送和转换标准字符串时,我得到奇怪的字符