首页 > 解决方案 > 为什么两个计时时间点的差异会导致秒数?

问题描述

我有以下代码:

#include <algorithm>
#include <iostream>
#include <iomanip>
#include <ctime>
#include <chrono>

using namespace std;
using namespace std::chrono;

int main()
{
    
    using my_timepoint = time_point<high_resolution_clock, nanoseconds>;
    
    my_timepoint now = system_clock::now();
    my_timepoint then = system_clock::now() - seconds{1};
  
    duration<double> my_dur = now - then;
   
    cout << my_dur.count();
}

这里my_timepoint表示nanoseconds仍然我得到此代码的输出为1. 为什么不是1e+09?如何评估两个时间点的差异?

标签: timedurationchrono

解决方案


持续时间模板采用比率参数,如下所述: https ://en.cppreference.com/w/cpp/chrono/duration

发布的代码使用默认值(每 1 秒 1 个滴答声),所以当您请求它时count(),它自然会返回 1,以表示已过去的滴答声数。

您可以构造一个使用不同比率的持续时间对象,然后您将获得1e+09

duration<double, std::ratio<1, 1000000000>> my_dur = now - then;

推荐阅读