How does duration_cast round

How does duration_cast round

本文关键字:cast round duration does How      更新时间:2023-10-16

如果我转换为更粗糙的时间单位(例如std::chrono::minutes转换为std::chrono::hours),duration_cast将如何舍入?例如,如果转换为std::chrono::hoursstd::chrono::minutes(91)会变成什么值?2小时,1小时?

duration_cast总是四舍五入到零。 即正值向下舍入,负值向上舍入。

有关其他舍入选项,请参阅:

http://howardhinnant.github.io/duration_io/chrono_util.html

floorceilround目前在1z(希望是C++17)草案C++。 同时,请随时使用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