ostream 相当于 %.2f 或 %.2lf
double d = 1/2.;
printf("%.2lf\n", d);
这会打印出 0.50
。这就是我想使用 ostream 操纵器复制的内容。然而,没有一个明显的 iomanip 操纵器让我设置所需的最小小数位(如果我理解正确的话,set precision
设置最大宽度)。有没有纯粹的 iostream 或 boost 方法来做到这一点?
double d = 1/2.;
printf("%.2lf\n", d);
This prints out 0.50
. This is what I want to replicate using ostream manipulators. However, none of the obvious iomanip
manipulators let me set the minimum required decimal places (if I understood correctly, setprecision
sets the maximum width). Is there a pure iostream
or boost
way to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以使用
iomanip
标头中的std::fixed
和std::set precision
:这将根据需要输出
0.50
。You can use
std::fixed
andstd::setprecision
from theiomanip
header:This outputs
0.50
as desired.将
set precision
与fixed
结合使用。根据标准第 22.4.2.2.2 节,iostream 上的精度规范与
printf
具有完全相同的效果。fixed
提供与printf
的%f
完全相同的行为。Use
setprecision
in combination withfixed
.According to section 22.4.2.2.2 of the standard, precision specifications on iostreams have exactly the same effect as they do for
printf
. Andfixed
gives the exact same behavior asprintf
's%f
.boost方式: http://www.boost.org /doc/libs/1_47_0/libs/format/doc/format.html。
The boost way: http://www.boost.org/doc/libs/1_47_0/libs/format/doc/format.html.