I am new to C++, learning it by my self, and I am using the book “C++ how to program – 7th edition” from Deitel. Now, please have a look at the following code
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main()
{
double principle = 1000;
double amount;
double rate = 0.05;
cout << "Year" << setw(21) << "Amount on deposit" << endl;
cout << fixed << setprecision(2);
for(int years=1; years<=10; years++)
{
amount = principle * pow(1.0+rate,1.0);
cout << setw(4) << years << setw(21) << amount << endl;
}
}
When I removed the “fixed” stream manipulator, the output becomes stupid, which means, just ascii letters and numbers. When I insert it, the output comes without any problem. My question is, why is this happening? Is “fixed” mandatory for all the programs which has “double” type outputs? Please help.
And another thing. What are stream manipulators? As a Java developer, I thought these might be some kind of constant variables, but it is not! They are methods? Then why the brackets are not there? Please answer to this question too.
Thanks
The output does not “become stupid”: you simply let your output stream choose the format for your floating-point numbers, and it picks scientific notation. This gives you
1e+03(which means1*10^3) instead of1050.00. The use offixedtells the stream that you do not want scientific notation; you could also usescientificto force the scientific format. Since the precise format depends depends on your application requirements, the choice to usefixedorscientificis ultimately up to you.