時間ユーティリティライブラリの<chrono>
には、精度が下がる単位変換をする場合に使用するduration_cast()
関数があります。
C++1zでは、このときの丸め演算をユーザーが選択するための機能が導入されます。
まず、整数を時間間隔の値型とするduration
のための、floor()
(切り下げ)、ceil()
(切り上げ)、round()
(最近接偶数への丸め)。それと符号あり整数の時間間隔を持つduration
のためのabs()
(絶対値)。
#include <iostream> #include <chrono> using namespace std::chrono; int main() { milliseconds ms(2500); seconds sec = round<seconds>(ms); // 500は精度落ちする std::cout << sec.count() << std::endl; // 2 }
それと、そのduration
を持つtime_point
のための、floor()
、ceil()
、round()
が入ります。
Boost 1.61.0時点のBoost.Chronoライブラリには、duration
に対するfloor()
、ceil()
、round()
があります。
参照
- Boost.Chrono
duration
の丸め演算 - Faith and Brave - C++で遊ぼう duration_cast
と浮動小数点数型 - Faith and Brave - C++で遊ぼう- 浮動小数点数の
duration
型 - Faith and Brave - C++で遊ぼう - P0092R0 Polishing
<chrono>
- P0092R1 Polishing
<chrono>
お断り
この記事の内容は、C++1zが正式リリースされる際には変更される可能性があります。正式リリース後には、C++日本語リファレンスサイトcpprefjpの以下の階層の下に解説ページを用意する予定です。