メモの日々


2012年02月20日(月) [長年日記]

[c++] C++のストリームに小数点以下桁数を指定

以前ストリームに精度を指定する方法をメモしたが、小数点以下の桁数を指定する方法もメモ。std::fixed()を使えばよい。

#include <iostream>
#include <iomanip>

using namespace std;

int main() {
    double d = 12.3456789;

    // [1] 精度、floatfield共未指定
    cout << "[1] "
         << d
         << endl;

    // [2] 精度のみ指定
    cout << "[2] "
         << setprecision(5)
         << d
         << endl;

    // [3] 精度とfloatfiled指定
    //     こうすると、精度の意味が小数点以下の桁数になる。
    cout << "[3] "
         << fixed
         << setprecision(5)
         << d
         << endl;

    // [4] 精度のみ指定(floatfieldの設定は引き継がれる)
    cout << "[4] "
         << setprecision(5)
         << d
         << endl;

    // [5] floatfieldをリセットして精度を指定
    cout << "[5] "
         << resetiosflags(ios_base::floatfield)
         << setprecision(5)
         << d
         << endl;
}

出力結果:

[1] 12.3457
[2] 12.346
[3] 12.34568
[4] 12.34568
[5] 12.346