删除"固定"流操纵器时出现问题

Pea*_*Gen 1 c++ stream

我是C++的新手,我自己学习它,我正在使用Deitel的"C++ how to program - 第7版"这本书.现在,请查看以下代码

    #include <iostream>
    #include <iomanip>
    #include <cmath>

    using namespace std;

    int main()
    {
        double principle = 1000;
        double amount;
        double rate = 0.05;

        cout << "Year" << setw(21) << "Amount on deposit" << endl;

        cout << fixed << setprecision(2);

        for(int years=1; years<=10; years++)
        {
            amount = principle * pow(1.0+rate,1.0);

            cout << setw(4) << years << setw(21) << amount << endl;
        }
}
Run Code Online (Sandbox Code Playgroud)

当我删除"固定"流操纵器时,输出变得愚蠢,这意味着,只是ascii字母和数字.当我插入它时,输出没有任何问题.我的问题是,为什么会发生这种情况?对于具有"双"型输出的所有程序,"固定"是强制性的吗?请帮忙.

另一件事.什么是流操纵器?作为Java开发人员,我认为这些可能是某种常量变量,但事实并非如此!他们是方法吗?那为什么括号不在那里?请回答这个问题.

谢谢

das*_*ght 6

输出不会"变得愚蠢":您只需让输出流选择浮点数的格式,它就会选择科学记数法.这给了你1e+03(意思是1*10^3)而不是1050.00.使用fixed告诉流你不想要科学记数法; 你也可以使用scientific强制科学的格式.由于精确的格式取决于您的应用要求,因此选择使用fixedscientific最终取决于您.