在C中我们有一个如下声明:
printf("%6.3f ",floatNumber);
限制打印时的位数
如何在C++
中实现类似的行为?我知道setprecision
,但这对我做同样的事情没有帮助。
答案 0 :(得分:7)
要使用标准的iostream操纵器,可以获得与%6.3f
指定的格式类似的格式:
std::cout << std::fixed << std::setw(6) << std::setprecision(3) << f;
具体来说,std::fixed
表示格式字符串中与f
相同的基本格式,因此,例如,'precision'对格式字符串和ostream都表示相同的含义。 std::setprecision(3)
然后实际设置精度,std::setw(6)
设置字段宽度。如果不设置std::fixed
,您将获得与格式字符串"%6.3g"
指定的格式类似的格式。
请注意,除setw
外,这些操纵器都很粘。也就是说,它们在输出一个变量后仍然有效。
答案 1 :(得分:4)
您最好的选择是使用boost::format
。请参阅the documentation,尤其是the examples
下一个最佳(如果您不能在项目中使用boost
)是继续使用printf
。它是C ++标准库的一部分,所以只要你#include <stdio.h>
就像它一样,它应该“正常工作”。