首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将printf格式与iomanip进行匹配

将printf格式与iomanip进行匹配
EN

Stack Overflow用户
提问于 2015-12-14 20:00:10
回答 2查看 802关注 0票数 7

我有一些旧的C代码,我正在尝试复制C++中的行为。它使用printf修饰符:"%06.02f“。

我天真地认为iomanip同样有能力,并且做到了:

代码语言:javascript
复制
cout << setfill('0') << setw(6) << setprecision(2)

当我试图输出测试编号123.456时,printf产生:

123.46

cout的收益是:

1.2+e02

iomanip中有什么可以复制的吗?还是必须重新使用printf

[Live Example]

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-14 20:06:48

三个C格式说明符映射到C++ IOStreams中相应的格式设置:

  • %f -> std::ios_base::fixed (不动点表示法)通常使用out << std::fixed设置。
  • %e -> std::ios_base::scientific (科学符号)通常使用out << std::scientific设置。
  • %g ->默认设置,通常使用out.setf(std::fmtflags(), std::ios_base::floatfield)或与C++11一起设置,然后使用out << std::defaultfloat设置。默认格式是试图产生“最佳”的其他格式假设一定数量的数字要使用。

精度、宽度和填充字符与您已经声明的方式相匹配。

票数 2
EN

Stack Overflow用户

发布于 2015-12-14 20:01:46

试试std::fixed

代码语言:javascript
复制
std::cout << std::fixed;

将str流的floatfield格式标志设置为固定。 当floatfield设置为fixed时,浮点值是用定点表示法编写的:该值用精确字段(precision)指定的小数位数表示,没有指数部分。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34275542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档