C++ Пошаговое Руководство cout.setf (ios:: fixed); и cout.точность();

/* Problem 38 */
        #include <iostream>
        using namespace std;
        class abc {
        double n;
          public:
        abc() { n = 67.5; cout << "1n"; }
        abc(double num) { set(num); cout << "2n"; }
        double get() const { cout<<"3n"; return n; }
        virtual void set(double num) {
            if (num < 10)
            n = 10;
            else if (num > 100)
            n = 100;
            else
            n = num;
            cout << "4n";
        }
        };
        class def: public abc {
        double m;
          public:
        def() { m = 6.2; cout << "5n"; }
        def(double num1, double num2): abc(num1) {
            set(num2 - abc::get()); cout << "6n"; }
        double get() const {
            cout << "7n"; return m + abc::get(); }
        void set(double num) {
            if (num < 10 || 100 < num)
            m = num;
            else
            m = 55;
            cout << "8n";
        }
        };
        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;
        }

в коде выше я просто хотел знать, что будет две строки, действительно, в приведенном выше коде

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

пожалуйста, не просто дайте мне ответ, некоторые объяснения будут так оценены, потому что я делаю пошаговое руководство, чтобы подготовиться к моему выпускному экзамену завтра.

Я искал и какой-то источник говорит, что это набор флагов, но на самом деле я не понимаю, что такое концепция и как она работает

4 ответов


cout.setf(ios::fixed)

делает поплавки печати cout с фиксированным числом десятичных знаков и

cout.precision(3)

задает номер три.

например, если у вас есть

double f = 2.5;

затем

cout << f;

печати

2.500

отличная документация о том, как форматировать вывод:форматирование выходных данных

это всегда полезно, когда вы пытаетесь сделать интерфейс командной строки.


#include<iostream>

using namespace std;

int main(){
    float large = 2000000000;
    cout << large;
    return 0;
}

выход будет в научной нотации как:

2e+009

чтобы получить значение, как оно есть, вы должны использовать cout.setf(ios::fixed)

#include<iostream>

    using namespace std;

    int main(){
        cout.setf(ios::fixed);
        float large = 2000000000;
        cout << large;
        return 0;
    }

выход будет как он с точностью по умолчанию которая 6 для поплавка.

2000000000.000000

вы можете установить точность в вышеуказанном коде как:

cout.precision(7);

.....


это похоже на включение библиотеки манипуляций:
включить:

<iomanip>

а затем с помощью следующих функций

cout << fixed << showpoint;
cout << setprecision(3);