gpt4 book ai didi

c++ - 为什么 setw 不工作?

转载 作者:行者123 更新时间:2023-11-28 03:16:51 29 4
gpt4 key购买 nike

#include<fstream.h>
#include<iomanip.h>
#include<iostream.h>
using namespace std;
ifstream f("atestat.in");
ofstream g("atestat.out");
int n,i,nr=0;
float v[100];
void a(int n)
{
for(i=1;i<=n;i++)
f>>v[i];
for(i=1;i<=n;i++)
cout<<v[i]<<" ";
}
int main()
{
f>>n;
a(n);
cout<<endl;
float s=0;
for(i=1;i<=n;i++)
{
if(v[i]<0)
{
s=s+v[i];
nr++;
}
}
cout<<setw(2)<<s/nr<<endl;
}

我的“atestat.in”文件包含:6个-56.765 2.3 4.56 -1.2 -1.8 3

程序首先通过使用数组显示“atestat.in”文件第二行的所有数字,然后显示该数组内所有负数的算术平均值,小数点后 2 位数字的精度。出于某种原因,setw(2) 什么都不做,因为我的 cout<<setw(2)<<s/nr<<endl;显示“19.9217”而不是“19.92”...谁能告诉我为什么?我是否以某种方式不正确地使用了它?

最佳答案

with a precision of 2 numbers after the decimal mark

为此,您需要:

std::cout << std::fixed;
std::cout << std::setprecision(2) << f << '\n'; //assume f the number you wanna print

std::setw不用于此目的:

When used in an expression out << setw(n) or in >> setw(n), sets the width parameter of the stream out or in to exactly n.

关于c++ - 为什么 setw 不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16629506/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com