c++ - 删除 "fixed"流操纵器时出现问题

标签 c++ stream

我是 C++ 的新手,正在自学,我正在使用 Deitel 的《C++ 如何编程 - 第 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;
        }
}

当我移除“固定”流操纵器时,输出变得愚蠢,这意味着,只有 ascii 字母和数字。当我插入它时,输出没有任何问题。我的问题是,为什么会这样?所有具有“双重”类型输出的程序都必须“固定”吗?请帮忙。

还有一件事。什么是流操纵器?作为一名 Java 开发人员,我认为这些可能是某种常量变量,但事实并非如此!它们是方法?那为什么没有括号呢?请也回答这个问题。

谢谢

最佳答案

输出不会“变得愚蠢”:您只需让输出流选择 float 的格式,它会选择科学记数法。这将为您提供 1e+03(这意味着 1*10^3)而不是 1050.00fixed 的使用告诉流你不需要科学记数法;你也可以使用 scientific给力的科学格式。由于精确的格式取决于您的应用程序要求,因此选择使用 fixed 还是 scientific 最终取决于您。

关于c++ - 删除 "fixed"流操纵器时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11885489/

相关文章:

c++ - 转到不同网站后如何获得完整(准确)的 Url/QUrl 地址?

c++ - FLTK 1.4 小部件位置 w.r.t. X11 根窗口?

java - 使用 Qt 在 Android 上实现 NFC

.net - 从应用程序关闭在 Web 服务上创建的 MemoryStream

C# 网络流压缩 - Sharpziplib、DotNetZip、gzipstream 在我的流上均出现错误

c++ - QPrinter 链接器无法找到文件

c# - 如何获取 stringbuilder 并将其转换为 streamReader?

c++ - 在 C++ 中删除部分文件的最快方法

C++ 新手 : template function problem--getting string and numerical data from text file, 将其放入 vector 中

c++ - 如何在递归函数中使用迭代器