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

履歴 編集

variable
<limits>

std::numeric_limits::digits10

static const int digits10;     // (1) C++03
static constexpr int digits10; // (1) C++11

概要

10進数を型Tの値に変換し、また10進数に戻すことを考える。
digits10は、10進でn桁の「任意の」数に上の変換を行った場合値が変わらないようなnのうち、最大のものを表す。

ただし、Tが整数型の場合は元の「任意の」数は整数に限る。
また、浮動小数点数の場合は小数でもよいが、浮動小数点数に変換したときに指数部が巨大になってTで表せなくなったり、非正規化数になったりするような数は除外して考える。

備考

is_specialized == falseの場合は0

対応するマクロを次の表に挙げる。

対応するマクロ
float FLT_DIG
double DBL_DIG
long double LDBL_DIG

#include <iostream>
#include <limits>

int main()
{
  std::cout << std::numeric_limits<float>::digits10 << std::endl;
  std::cout << std::numeric_limits<double>::digits10 << std::endl;

  std::cout << std::numeric_limits<int>::digits10 << std::endl;
}

出力例

6
15
9

参照