如何将“std::chrono::system_clock::now()”转换为双精度浮点数?

4
auto current_time = std::chrono::system_clock::now();

C++中使用std::chrono获取当前时间,如上所示。
我该如何使用它来获取自时钟纪元以来的秒数作为double


1
double 是什么意思?自某个特定时期以来的秒数?毫秒?两周? - Fred Larson
1
一个时间值作为双精度浮点数有什么用?你确定你不想要一个持续时间吗? - AndyG
啊,自纪元以来的秒或类似的时间是我应该查看的。@FredLarson 理解你的观点了。 - TheWaterProgrammer
2
也许可以看一下这里的示例:http://en.cppreference.com/w/cpp/chrono/time_point/time_since_epoch - Fred Larson
1
将时间转换为IEEE 754二进制格式(在您的情况下为binary64)实际上是一个不好的想法。随着时间的推移,实际进度步骤会增加,因为对于非常大或非常小的值,存在更大的量子,并且许多值变得无法由浮点数表示。浮点数将数字表示为整数值除以2的幂。 - Swift - Friday Pie
@Swift-FridayPie 或者说,整秒数越大,小数秒的分辨率就越低。我更喜欢将存储时间表示为64位整数和双精度浮点数。整数部分存储整秒数,而双精度浮点数则存储小数秒(取值范围在0.0到1.0之间)。 - Matthew M.
1个回答

7

time_since_epoch可以给出自时钟纪元(无论纪元是什么)以来的持续时间:

auto current_time = std::chrono::system_clock::now();
auto duration_in_seconds = std::chrono::duration<double>(current_time.time_since_epoch());

double num_seconds = duration_in_seconds.count();

Demo


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接