gpt4 book ai didi

c++ - 在 float 中获取计时秒数

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:28:34 24 4
gpt4 key购买 nike

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

最佳答案

根据这个: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在 get converted to std::ratio<1> 中定义如

如果你想要以毫秒为单位的时间,你可以这样做:

std::chrono::duration<double, std::ratio<1, 1000>> elapsed_milliseconds = end-start;

end - start应该按照新的比例换算。

关于c++ - 在 float 中获取计时秒数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35486494/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com