我正在处理一个需要通过cout在一行上打印数组的应用程序,并显示2个小数位。目前,我的代码打印前两个带有2位小数的项目,然后切换为1。
以下是代码:
cout << " Inches ";
cout << showpoint << setprecision(2) << right;
for (int i = 0; i < 12; i++)
{
cout << setw(5) << precipitation[i];
}
cout << endl;
这是输出:
Inches 0.72 0.89 2.0 3.0 4.8 4.2 2.8 3.8 2.7 2.1 1.6 1.0
有人可以告诉我为什么这种变化是精确发生的,我可以做些什么来解决它?
由于
答案 0 :(得分:5)
您需要使用“固定”模式。在默认浮点模式下,precision()设置要显示的有效数字的数量。在“固定”模式下,它设置小数点后的位数。一个很好的例子:
#include <iostream>
using namespace std;
int main(int argc, char **argv) {
float pi = 3.14;
cout.precision(2);
cout << pi << endl;
cout << fixed << pi << endl;
}
给出输出:
3.1
3.14
HTH。
答案 1 :(得分:1)
如果您只是添加cout&lt;&lt;除了showpoint和setprecision之外,在输出语句之前修复,您将获得所有输出的一致格式。
见下文:
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
double precipitation[12] = { .72, .89, 2, 3, 4.8, 4.2, 2.8, 3.8, 2.7, 2.1, 1.6, 1 };
cout << " Inches ";
cout << showpoint << fixed << setprecision(2) << right;
for (int i = 0; i < 12; i++)
{
cout << setw(5) << precipitation[i];
}
cout << endl;
return 0;
}
现在,输出将如下:
Inches 0.72 0.89 2.00 3.00 4.80 4.20 2.80 3.80 2.70 2.10 1.60 1.00
答案 2 :(得分:0)
我也遇到了这个问题。你需要使用'fixed'来做到这一点。