4

在 C 语言中,我们有这样的语句:

printf("%6.3f ",floatNumber);

这限制了打印时的位数。
我怎样才能实现类似的行为C++?我知道,setprecision但这并不能帮助我做同样的事情。

4

2 回答 2

7

%6.3f要获得与仅使用标准 iostream 操纵器指定的格式相似的格式,您可以执行以下操作:

std::cout << std::fixed << std::setw(6) << std::setprecision(3) << f;

具体std::fixed表示与格式字符串中相同的基本格式f,例如,“精度”对格式字符串和 ostream 表示相同的含义。std::setprecision(3)然后实际设置精度并std::setw(6)设置字段宽度。如果不进行设置std::fixed,您将获得与格式字符串指定的格式相似的格式"%6.3g"

请注意,除了setw这些操纵器是粘性的。也就是说,它们在一个变量输出后仍然有效。

于 2013-01-25T18:44:26.940 回答
4

您最好的选择是使用boost::format. 请参阅文档,尤其是示例

下一个最好的(如果你不能boost在你的项目中使用)是继续使用printf. 它是 C++ 标准库的一部分,因此只要您#include <stdio.h>喜欢它,它就应该“正常工作”。

于 2013-01-25T16:03:23.127 回答