如何在 C++ 中打印特定位数?例如,总共打印8位数字(小数点前后合并(编辑:为了进一步澄清,setprecision 在我有十进制数字要显示时设置数字。我想将整数 30 也显示为 30.000000,以 8 位数字表示。设置精度命令将固定编号。小数点后的数字,我不想这样。简而言之,我想要 c 命令 printf("%8d",N( 在C++中的替代方案。
包含iomanip
和fixed
中的setprecision()
函数来执行此操作,例如:
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
double d = 1000;
double t = d;
int dc=0;
while(t>0.9)
{
dc++;
t= t/10;
}
cout<<"dc:"<<dc<<endl;
cout << fixed;
std::cout << std::setprecision(dc);
std::cout << d;
return 0;
}
setprecision()
不会每次都正常工作,因此您也必须使用fixed
。
你应该使用 c++ 标头iomanip
你想要的是 setprecision()
函数:
std::cout << std::setprecision(5) << 12.3456789 << std::endl;
输出12.346
.它还有其他修饰符,你可以在这里
找到编辑
如果要打印尾随的 0,则还需要使用 std::fixed
。这表示使用该位数,无论它们是否有效。如果您希望这是总数,您可以计算出数字的大小,然后根据该大小更改您设置的精度,如下所示:
#include <iostream>
#include <iomanip>
#include <cmath>
int main()
{
double input = 30;
int magnitude = 0;
while(input / pow(10, magnitude))
{
++magnitude;
}
std::cout << std::fixed << std::setprecision(8 - magnitude) << input << std::endl;
return 0;
}
这将返回30.000000
。您还可以通过输出到字符串,然后显示该字符串来执行类似的操作。