Ответ 1
Используйте std::fixed
манипулятор потока:
cout<<fixed<<"Bas ana: "<<x<<"\tSon faiz: "<<t<<"\tSon ana: "<<x+t<<endl;
double x = 1500;
for(int k =0; k<10 ; k++){
double t =0;
for(int i=0; i<12; i++){
t += (double) x * 0.0675;
x += (double) x * 0.0675;
}
cout<<"Bas ana: "<<x<<"\tSon faiz: "<<t<<"\tSon ana: "<<x+t<<endl;
}
этот вывод
Базовая история: 3284.78 Сын faiz: 1784.78 Сын ana: 5069.55
Bas ana: 7193.17 Son faiz: 3908.4 Son ana: 11101.6
Базовая история: 15752 Сын faiz: 8558.8 Сын ana: 24310.8
Bas ana: 34494.5 Сын faiz: 18742.5 Сын ana: 53237
Базовая история: 75537.8 Сын faiz: 41043.3 Сын ana: 116581
Bas ana: 165417 Son faiz: 89878.7 Son ana: 255295
Базовая история: 362238 Сын faiz: 196821 Son ana: 559059
Bas ana: 793246 Son faiz: 431009 Son ana: 1.22426e + 006
Bas ana: 1.73709e + 006 Son faiz: 943845 Son ana: 2.68094e + 006
Bas ana: 3.80397e + 006 Son faiz: 2.06688e + 006 Son ana: 5.87085e + 006
Я хочу, чтобы числа показывались с точными числами, а не научными числами. Как я могу это сделать?
Используйте std::fixed
манипулятор потока:
cout<<fixed<<"Bas ana: "<<x<<"\tSon faiz: "<<t<<"\tSon ana: "<<x+t<<endl;
Как упоминалось выше, вы можете использовать std:: fixed для решения вашей проблемы, например:
cout << fixed;
cout << "Bas ana: " << x << "\tSon faiz: " << t << "\tSon ana: " << x+t <<endl;
Однако после того, как вы это сделали, каждый раз, когда вы печатаете float или double в любом месте вашего проекта, номер будет по-прежнему печататься в этой фиксированной нотации. Вы можете вернуть его, используя
cout << scientific;
но это может стать утомительным, если ваш код усложнится.
Вот почему Boost сделал Сохранение состояния потока ввода/вывода, который автоматически возвращает поток ввода-вывода, который вы используете, в состояние, которое было до вызова функции. Вы можете использовать его следующим образом:
#include <boost/io/ios_state.hpp> // you need to download these headers first
{
boost::io::ios_flags_saver ifs( os );
cout << ios::fixed;
cout<<"Bas ana: "<<x<<"\tSon faiz: "<<t<<"\tSon ana: "<<x+t<<endl;
} // at this bracket, when ifs goes "out of scope", your stream is reset
Более подробную информацию о Boost I/O Stream State Saver в официальных документах можно найти.
Вы также можете проверить библиотеку формата Boost Format, которая также может облегчить ваш вывод, особенно если вам приходится иметь дело с интернационализацией. Однако это не поможет вам решить эту проблему.
Вы можете использовать флаги формата
Дополнительная информация: http://www.cplusplus.com/reference/iostream/ios_base/fmtflags/
Существует целый набор операторов форматирования, которые вы получаете с помощью iostream. Здесь учебник, чтобы вы начали.