如何在单个cout中对多个变量进行set.precision

时间:2016-02-09 05:55:14

标签: c++ precision cout setf

我主要有这个:

Product newProduct;
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(2);
newProduct.display();

在Product.cpp中我有:

cout << "$" << basePrice << " - " 
     << name << " - " << cout.precision(1) << weight << " lbs\n";

但是.cpp中将精度更改为(1)也会将basePrice更改为(1)。如何在同一个cout中更改不同变量的精度?有办法吗?或者我只是把它们放在不同的cout?那甚至会起作用吗?为什么或者为什么不?

更新 当我尝试第二个cout时,它将数字2添加到我的名字变量的末尾。换句话说,我在名字变量之后结束了第一个cout。它正在工作,但将数字2添加到最后。

1 个答案:

答案 0 :(得分:3)

请改用std::setprecision操纵器:

cout << setprecision(2) << "$" << basePrice << " - " 
 << name << " - " << setprecision(1) << weight << " lbs\n";

数字2cout.precision()函数的返回值,它是当前的精度值,插入到流中并因此输出。

编辑:

哎呀,忘了添加#include <iomanip>

编辑2:

为了完整性,请参阅我的this question,了解cout.precision()在中间调用时影响整个流的原因。