最終更新日時(UTC):
が更新

履歴 編集

variable
<chrono>

std::chrono::hh_mm_ss::fractional_width(C++20)

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

処理系