namespace std::chrono {
template <class Duration>
class hh_mm_ss {
public:
static constexpr bool fractional_width = see below;
};
}
概要
precision
型によって表現される小数の小数桁数。
この値は、Duration
のすべての値を正確に表せるように、[0, 18]
の範囲内で最小の整数値をもつ。そのようなfractional_width
が存在しない場合、値は6となる (std::numeric_limits<float>::digits10
の値)。
Duration
に指定する型によってfractional_width
の値がどのように変わるかの表は以下となる:
Duration |
fractional_width の値 |
小数点をもつ値のフォーマット出力 |
---|---|---|
hours , minutes , seconds |
0 | |
milliseconds |
3 | 0.001 |
microseconds |
6 | 0.000001 |
nanoseconds |
9 | 0.000000001 |
duration<int, ratio<1, 2>> |
1 | 0.5 |
duration<int, ratio<1, 3>> |
6 | 0.333333 |
duration<int, ratio<1, 4>> |
2 | 0.25 |
duration<int, ratio<1, 5>> |
1 | 0.2 |
duration<int, ratio<1, 6>> |
6 | 0.166666 |
duration<int, ratio<1, 7>> |
6 | 0.142857 |
duration<int, ratio<1, 8>> |
3 | 0.125 |
duration<int, ratio<1, 9>> |
6 | 0.111111 |
duration<int, ratio<1, 10>> |
1 | 0.1 |
duration<int, ratio<756, 625>> |
4 | 0.2096 |
例
#include <iostream>
#include <chrono>
namespace chrono = std::chrono;
using namespace std::chrono_literals;
int main() {
std::cout << chrono::hh_mm_ss{0s} << std::endl;
std::cout << chrono::hh_mm_ss{1ms} << std::endl;
std::cout << chrono::hh_mm_ss{1ns} << std::endl;
// 1/3秒単位
std::cout << chrono::hh_mm_ss{chrono::duration<int, std::ratio<1, 3>>{1}} << std::endl;
}
出力
00:00:00
00:00:00.001
00:00:00.000000001
00:00:00.333333
バージョン
言語
- C++20
処理系
- Clang: 10.0 ✅
- GCC: 11.1 ✅
- Visual C++: 2019 Update 3 ❌