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;
}
11
#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