C++ Пошаговое Руководство cout.setf (ios:: fixed); и cout.точность();
/* Problem 38 */
#include <iostream>
using namespace std;
class abc {
double n;
public:
abc() { n = 67.5; cout << "1n"; }
abc(double num) { set(num); cout << "2n"; }
double get() const { cout<<"3n"; return n; }
virtual void set(double num) {
if (num < 10)
n = 10;
else if (num > 100)
n = 100;
else
n = num;
cout << "4n";
}
};
class def: public abc {
double m;
public:
def() { m = 6.2; cout << "5n"; }
def(double num1, double num2): abc(num1) {
set(num2 - abc::get()); cout << "6n"; }
double get() const {
cout << "7n"; return m + abc::get(); }
void set(double num) {
if (num < 10 || 100 < num)
m = num;
else
m = 55;
cout << "8n";
}
};
void do_it(abc &var, double num)
{ cout << var.get() << 'n';
var.set(num);
cout << var.get() << 'n';
}
int main()
{ abc x(45);
def y(2, 340);
cout.setf(ios::fixed);
cout.precision(3);
do_it(x, 200);
do_it(y, 253);
cout << x.get() << 'n';
cout << y.get() << 'n';
return 0;
}
в коде выше я просто хотел знать, что будет две строки, действительно, в приведенном выше коде
cout.setf(ios::fixed);
cout.precision(3);
пожалуйста, не просто дайте мне ответ, некоторые объяснения будут так оценены, потому что я делаю пошаговое руководство, чтобы подготовиться к моему выпускному экзамену завтра.
Я искал и какой-то источник говорит, что это набор флагов, но на самом деле я не понимаю, что такое концепция и как она работает
4 ответов
cout.setf(ios::fixed)
делает поплавки печати cout с фиксированным числом десятичных знаков и
cout.precision(3)
задает номер три.
например, если у вас есть
double f = 2.5;
затем
cout << f;
печати
2.500
отличная документация о том, как форматировать вывод:форматирование выходных данных
это всегда полезно, когда вы пытаетесь сделать интерфейс командной строки.
#include<iostream>
using namespace std;
int main(){
float large = 2000000000;
cout << large;
return 0;
}
выход будет в научной нотации как:
2e+009
чтобы получить значение, как оно есть, вы должны использовать cout.setf(ios::fixed)
#include<iostream>
using namespace std;
int main(){
cout.setf(ios::fixed);
float large = 2000000000;
cout << large;
return 0;
}
выход будет как он с точностью по умолчанию которая 6 для поплавка.
2000000000.000000
вы можете установить точность в вышеуказанном коде как:
cout.precision(7);
.....
это похоже на включение библиотеки манипуляций:
включить:
<iomanip>
а затем с помощью следующих функций
cout << fixed << showpoint;
cout << setprecision(3);