std::chrono::round(std::chrono::time_point)
来自cppreference.com
| 在标头 <chrono> 定义
|
||
| |
(C++17 起) | |
返回能以 ToDuration 表示的最接近 tp 的时间点,中点情况下向偶数舍入。
除非 ToDuration 是 std::chrono::duration 的特化且 std::chrono::treat_as_floating_point_v<typename ToDuration::rep> 为 false,否则此函数不参与重载决议。
参数
| tp | - | 要舍入到最近值的时间点 |
返回值
舍入到使用 ToDuration 类型时长的最近时间点的 tp,中点情况下向偶数舍入。
可能的实现
|
示例
运行此代码
#include <iostream>
#include <chrono>
#include <string>
template <typename TimePoint>
std::string to_string(const TimePoint& time_point)
{
return std::to_string(time_point.time_since_epoch().count());
}
int main()
{
using namespace std::literals::chrono_literals;
using Sec = std::chrono::seconds;
std::cout << "Time point\t" "Cast\t" "Floor\t" "Round\t" "Ceil\n";
std::cout << "(ms)\t\t" "(s)\t" "(s)\t" "(s)\t" "(s)\n";
for (const auto value_ms: {5432ms, 5678ms}) {
std::chrono::time_point<std::chrono::system_clock, std::chrono::milliseconds>
time_point_ms(value_ms);
std::cout
<< to_string(time_point_ms) << "\t\t"
<< to_string(std::chrono::time_point_cast<Sec>(time_point_ms)) << "\t"
<< to_string(std::chrono::floor <Sec>(time_point_ms)) << "\t"
<< to_string(std::chrono::round <Sec>(time_point_ms)) << "\t"
<< to_string(std::chrono::ceil <Sec>(time_point_ms)) << "\n";
}
}
输出:
Time point Cast Floor Round Ceil
(ms) (s) (s) (s) (s)
5432 5 5 5 6
5678 5 5 6 6
参阅
(C++11) |
转换时间点为同一时钟上拥有不同时长的另一时间点 (函数模板) |
| 转换 time_point 到另一个,向上取整 (函数模板) | |
| 转换 time_point 到另一个,向下取整 (函数模板) | |
(C++17) |
转换时长到另一个时长,就近取整,偶数优先 (函数模板) |
(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11) |
最接近整数,中间情况下向远离零舍入 (函数) |