在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();
请参阅以下职位转换的例子。
How to get duration, as int milli's and float seconds from <chrono>?
C++ chrono - get duration as float or long long
getting chrono time in specific way
Chrono Timer Not Converting Seconds Properly
我在参考文献的顶部看到了我错过的部分:'tick周期是编译时有理常量,表示从一个刻度到下一个刻度的秒数。“因此,默认比例为1:1,持续时间总是代表一秒钟。感谢您将这引起我的注意。 – taz
'std :: ratio <1, 1000>'可以替换为'std :: milli'。 –