double d = 1/2.;
printf("%.2lf\n", d);
将打印出0.50
。这就是我要使用ostream机械手进行复制的内容。但是,没有任何明显的iomanip
操纵器让我设置所需的最小小数位(如果我理解正确,setprecision
会设置最大宽度)。是否有纯粹的iostream
或boost
方法可以做到这一点?
将setprecision
与fixed
结合使用。
根据标准的22.4.2.2.2节,关于iostream的精度规范与printf
具有完全相同的效果。 fixed
的行为与printf
的%f
完全相同。
您可以使用std::fixed
标头中的std::setprecision
和iomanip
:
#include <iostream>
#include <iomanip>
int main(void) {
double d = 1.0 / 2;
std::cout << std::fixed << std::setprecision(2) << d << std::endl;
return 0;
}
根据需要输出0.50
。