• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

    最終更新日時(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
    

    参照