web-dev-qa-db-ja.com

C ++ストリームで小数点以下3桁で出力する方法は?

Float型の変数が与えられた場合、C++でiostreamを使用して、小数点以下3桁で出力する方法は?

15
Alex Lapchenko

setf および precision を使用します。

#include <iostream>

using namespace std;

int main () {
    double f = 3.14159;
    cout.setf(ios::fixed,ios::floatfield);
    cout.precision(3);
    cout << f << endl;
    return 0;
}

これは3.142

22
dasblinkenlight

これは「13.141」を示しています

#include <iostream>
#include <iomanip>
using namespace std;

int main(){
    double f = 13.14159;
    cout << fixed;
    cout << setprecision(3) << f << endl;
    return 0;
}
10
mask8

iomanipヘッダーを使用すると、固定数の小数桁(およびその他の多くのもの)を取得できます。例えば:

#include <iostream>
#include <iomanip>

int main() {
    double pi = 3.141592653589;
    std::cout << std::fixed << std::setprecision(2) << pi << '\n';
    return 0;
}

出力されます:

3.14

fixedsetprecisionはどちらもストリームを永続的に変更するため、エフェクトをローカライズしたい場合は、事前に情報を保存し、後で復元することができます。

#include <iostream>
#include <iomanip>

int main() {
    double pi = 3.141592653589;

    std::cout << pi << '\n';

    // Save flags/precision.
    std::ios_base::fmtflags oldflags = std::cout.flags();
    std::streamsize oldprecision = std::cout.precision();

    std::cout << std::fixed << std::setprecision(2) << pi << '\n';
    std::cout << pi << '\n';

    // Restore flags/precision.
    std::cout.flags (oldflags);
    std::cout.precision (oldprecision);

    std::cout << pi << '\n';

    return 0;
}

その出力は次のとおりです。

3.14159
3.14
3.14
3.14159
7
paxdiablo

10進数の後に3桁の精度で数値を出力したい場合は、数値cout << std::setprecision(3) << desired_numberを出力する前に、次のものを追加してください。コードに#include <iomanip>を追加することを忘れないでください。

2
uneet7