C ++演练cout.setf(ios :: fixed);和cout.precision();

时间:2012-04-16 20:23:25

标签: c++ walkthrough

/* 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;
        }

使用上面的代码,我只是想知道上面的代码

中下面两行是什么

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

请不要只是给我回答一些解释会非常感激,因为我正在为明天的期末考试做准备。

我搜索过,有些消息来源说它是设置标志,但实际上我没有得到它的概念以及它是如何工作的

4 个答案:

答案 0 :(得分:13)

cout.setf(ios::fixed)

使cout打印浮点数具有固定的小数位数和

cout.precision(3)

将此数字设为3。

例如,如果你有一个

double f = 2.5;

然后

cout << f;

将打印

2.500

答案 1 :(得分:3)

有关如何格式化输出的精彩文档:Output formatting

当您尝试执行命令行UI时,它总是很有用。

答案 2 :(得分:1)

#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);

.....

答案 3 :(得分:0)

它类似于包含操作库:
包括:

ERROR Interrupt: Interrupt
    /home/usrname/.gem/jruby/1.9/gems/pry-0.10.3-java/lib/pry/pry_class.rb:98:in `load_traps'

然后使用以下功能

<iomanip>