duration_cast如何舍入
How does duration_cast round
如果我转换为更粗略的时间单位(例如 std::chrono::minutes
到 std::chrono::hours
),duration_cast
将如何舍入?比如std::chrono::minutes(91)
转换成std::chrono::hours
会变成什么值? 2 小时,1 小时?
duration_cast
总是向零舍入。 IE。正值向下舍入,负值向上舍入。
有关其他舍入选项,请参阅:
http://howardhinnant.github.io/duration_io/chrono_util.html
floor
、ceil
和 round
目前在 C++ 1z(希望是 C++17)草案工作文件中。同时,请随时使用 chrono_util.html 中的代码,如果您有任何问题,请告诉我。
C++ 17 更新
std::chrono::floor<std::chrono::seconds>(1400ms) == 1s
std::chrono::floor<std::chrono::seconds>(1500ms) == 1s
std::chrono::floor<std::chrono::seconds>(1600ms) == 1s
std::chrono::floor<std::chrono::seconds>(-1400ms) == -2s
std::chrono::floor<std::chrono::seconds>(-1500ms) == -2s
std::chrono::floor<std::chrono::seconds>(-1600ms) == -2s
如果我转换为更粗略的时间单位(例如 std::chrono::minutes
到 std::chrono::hours
),duration_cast
将如何舍入?比如std::chrono::minutes(91)
转换成std::chrono::hours
会变成什么值? 2 小时,1 小时?
duration_cast
总是向零舍入。 IE。正值向下舍入,负值向上舍入。
有关其他舍入选项,请参阅:
http://howardhinnant.github.io/duration_io/chrono_util.html
floor
、ceil
和 round
目前在 C++ 1z(希望是 C++17)草案工作文件中。同时,请随时使用 chrono_util.html 中的代码,如果您有任何问题,请告诉我。
C++ 17 更新
std::chrono::floor<std::chrono::seconds>(1400ms) == 1s
std::chrono::floor<std::chrono::seconds>(1500ms) == 1s
std::chrono::floor<std::chrono::seconds>(1600ms) == 1s
std::chrono::floor<std::chrono::seconds>(-1400ms) == -2s
std::chrono::floor<std::chrono::seconds>(-1500ms) == -2s
std::chrono::floor<std::chrono::seconds>(-1600ms) == -2s