1. ホーム
  2. c++

[解決済み] C++チュートリアル cout.setf(ios::fixed); と cout.precision();

2022-02-13 10:37:29

質問

/* Problem 38 */
        #include <iostream>
        using namespace std;
        class abc {
        double n;
          public:
        abc() { n = 67.5; cout << "1\n"; }
        abc(double num) { set(num); cout << "2\n"; }
        double get() const { cout<<"3\n"; return n; }
        virtual void set(double num) {
            if (num < 10)
            n = 10;
            else if (num > 100)
            n = 100;
            else
            n = num;
            cout << "4\n";
        }
        };
        class def: public abc {
        double m;
          public:
        def() { m = 6.2; cout << "5\n"; }
        def(double num1, double num2): abc(num1) {
            set(num2 - abc::get()); cout << "6\n"; }
        double get() const {
            cout << "7\n"; return m + abc::get(); }
        void set(double num) {
            if (num < 10 || 100 < num)
            m = num;
            else
            m = 55;
            cout << "8\n";
        }
        };
        void do_it(abc &var, double num)
        {   cout << var.get() << '\n';
        var.set(num);
        cout << var.get() << '\n';
        }
        int main()
        {   abc x(45);
        def y(2, 340);
        cout.setf(ios::fixed);
        cout.precision(3);
        do_it(x, 200);
        do_it(y, 253);
        cout << x.get() << '\n';
        cout << y.get() << '\n';
        return 0;
        }

上記のコードで、以下の2つの行が実際に何をするのか知りたかっただけです。

cout.setf(ios::fixed); cout.precision(3);

明日の期末テストのためにウォークスルーをやっているので、ただ答えを与えるだけでなく、何らかの説明があるととてもありがたいのですが。

検索してみると、フラグを設定することだと書いてあるものもありましたが、実際のところ、どのようなコンセプトで、どのように機能するのかが分かりません。

どのように解決するのですか?

cout.setf(ios::fixed)

は、cout が一定の小数点以下の浮動小数点を表示するようにし

cout.precision(3)

は、この数を3に設定します。

例えば、あなたが

double f = 2.5;

では

cout << f;

を印刷します。

2.500