double d = 1/2.;
printf("%.2lf\n", d);
打印出0.50
。这就是我想用ostream操纵器复制的内容。但是,没有明显的iomanip
操纵器允许我设置所需的最小小数位(如果我理解正确,setprecision
设置最大宽度)。是否有纯iostream
或boost
方式来执行此操作?
答案 0 :(得分:10)
您可以使用std::fixed
标题中的std::setprecision
和iomanip
:
#include <iostream>
#include <iomanip>
int main(void) {
double d = 1/2.;
std::cout << std::fixed << std::setprecision(2) << d << std::endl;
return 0;
}
根据需要输出0.50
。
答案 1 :(得分:3)
将setprecision
与fixed
结合使用。
根据标准第22.4.2.2.2节,iostreams的精确规格与printf
的精确规格完全相同。 fixed
提供与printf
的{{1}}完全相同的行为。
答案 2 :(得分:1)