1

这是我的问题:

给定三个已经声明和初始化的 double 类型变量 a、b、c,编写一些代码,将它们中的每一个都打印在同一行的 15 个位置字段中,以使科学(或电子符号或指数符号)被避免。每个数字应在小数点右侧打印 5 位数字。例如,如果它们的值为 24.014268319、14309、0.00937608,则输出将是:

|xxxxxxx24.01427xxxx14309.00000xxxxxxxxx0.00938

注意:竖线 | ,左上角代表打印区域的左边缘;不能打印出来。此外,我们在上面的输出中显示 x 来表示空格——您的输出实际上不应该有 x!

这本质上是我想要做的事情:

cout << fixed << setprecision(5) << 24.014268319 << setw(5) << 5252.25151516 << endl;

但这会产生以下输出:

24.014275252.25152

显然我没有解释如何setw(n)正确使用,有没有人看到我在这里做错了什么?

4

1 回答 1

4

I/O 操纵器setw(...)有点棘手,因为它的效果正在被重置,即在每次调用(以及文档<<中描述的其他内容)之后将宽度设置回零。

您需要setw(15)多次调用,如下所示:

cout << fixed << setprecision(5) << setw(15) << 24.014268319  << setw(15) << 5252.25151516 << endl;

演示。

于 2015-01-25T23:17:36.867 回答