将time_point转换为浮点数

Converting time_point to float

本文关键字:浮点数 转换 point time      更新时间:2023-10-16

我有这个

std::chrono::high_resolution_clock::time_point mElapsedTime;

我想将这个time_point和另一个之间的差值转换为浮点数,这可能吗?

减号运算符重载一对time_points以生成浮点duration。如果需要积分持续时间,可以使用持续时间转换。

// Option 1
std::chrono::duration<float, std::milli> diff = mElapsedTime - mStartedTime;
// Access the float with .count
std::cout << diff.count() << 'n';
// Option 2
// Or convert to a discrete unit of time, with underlying integral type
std::chrono::milliseconds integral_diff =
   std::chrono::duration_cast<std::chrono::milliseconds>(mElapsedTime - mStartedTime);
std::cout << integral_diff.count() << 'n';
// What actually is std::chrono::milliseconds?
static_assert(
   std::is_same_v<std::chrono::milliseconds, std::chrono::duration<int64_t, std::milli>>);

我在上面的示例中保留了类型,因为我觉得这有助于了解我们正在处理的内容,在现实世界的代码中,我会使用 auto,尤其是对于持续时间转换。