在浮点模式下获取计时秒针
Get chrono seconds in float
在示例中,http://en.cppreference.com/w/cpp/chrono 秒值是在double
中获得的。这就是我想要的行为。但是,这似乎依赖于隐含的假设,即时间点减去会产生表示秒的值。我找不到任何解释为什么持续时间在实际没有指定时间单位时产生浮点秒。在不使用auto
的情况下,有人可以展示如何在浮点类型中显式获取时间单位(例如秒),或者向我指出为什么上述转换表示秒的文档或解释?
所讨论的转换本质上是:
std::chrono::time_point<std::chrono::system_clock> start = std::chrono::system_clock::now();
std::chrono::time_point<std::chrono::system_clock> end = std::chrono::system_clock::now();
std::chrono::duration<double> elapsed_seconds = end-start; // why does this represent seconds as opposed to some other time unit?
double secondsInDouble = elapsed_seconds.count();
有关转换示例,请参阅以下帖子。
如何从
C++ Chrono - 将持续时间设置为浮动或长
以特定方式获取计时时间
计时计时器无法正确转换秒数
根据这个: http://en.cppreference.com/w/cpp/chrono/duration 第二个模板参数的默认比率是1:1
,这意味着秒。
其他值是相对于该值的比率。例如,std::chrono::milliseconds
的比率为 1:1000
http://en.cppreference.com/w/cpp/numeric/ratio/ratio
所以这个说法:
std::chrono::duration<double> elapsed_seconds = end-start;
相当于:
std::chrono::duration<double, std::ratio<1>> elapsed_seconds = end-start;
它被定义为从中得出所有其他比率的秒。
无论end - start
定义什么单位,都会转换为std::ratio<1>
,以秒为单位。
如果你想要以毫秒为单位的时间,你可以做到:
std::chrono::duration<double, std::ratio<1, 1000>> elapsed_milliseconds = end-start;
end - start
应根据新比率进行转换。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 使用指针从C++中的数组中获取最大值
- 如何在另一个线程中关闭 MFC 模式对话框并获取对话框返回值?
- 使用安全模式从DLL(通过(INTPTR)参数传递到该函数)获取char **
- ESP8266:如何在车站模式(sta_mode)中获取客户端地址
- 使用 std::regex_search 获取与模式匹配的所有文件和文件夹
- 如何以模式获取数组中的数据?
- 获取二进制文件的所有可能变体 - 给定一个模式
- 获取与特定模式距离最小的矢量的元素位置
- 如何在过剩的情况下获取当前窗口模式
- 在浮点模式下获取计时秒针
- 通过在 C++ 中使用发布模式二进制文件获取崩溃原因
- 如何在发布模式下从程序获取 isapi dll 物理路径
- 从混合模式c++项目中的CLR-to-SEH异常中获取明智的信息
- 在窗口模式下设置/获取我的绝对鼠标位置
- 当项目在发布模式下崩溃时,如何获取函数名称和行号
- 获取无模式对话框窗口处理程序
- 如何使用资源获取初始化实现构建器模式