Почему setw не работает?
#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"... кто-нибудь может сказать мне, почему? Я использую это как-то неправильно?
1 ответ
с точностью до 2 цифр после десятичной запятой
Для этого вам необходимо:
std::cout << std::fixed;
std::cout << std::setprecision(2) << f << '\n'; //assume f the number you wanna print
std:: setw не служит для этой цели:
При использовании в выражении out << setw(n) или in >> setw(n) устанавливает для параметра ширины потока out или in значение ровно n.