c float precision命令的C ++等价物是什么?

时间:2013-01-25 15:53:18

标签: c++ c format-string

在C中我们有一个如下声明:

printf("%6.3f ",floatNumber);

限制打印时的位数 如何在C++中实现类似的行为?我知道setprecision,但这对我做同样的事情没有帮助。

2 个答案:

答案 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>就像它一样,它应该“正常工作”。