I know how to use printf() to format output of float, for example:
float i = 1;
printf("%.2f", i);
but how to format the output using cout to output 2 digits after "."?
I know how to use printf() to format output of float, for example:
float i = 1;
printf("%.2f", i);
but how to format the output using cout to output 2 digits after "."?
 
    
    Following will do:
std::cout<<std::fixed<<std::setprecision(2)<<i;
You will also need to include iomanip
 
    
    #include <iostream>
#include <iomanip>
using namespace std;
int main() {
    cout << setprecision(2) << setiosflags(ios::fixed) << 3.141592 << endl;
}
use setprecision().
 
    
    A red herring is to use std::setprecision on its own:
float f = 3.1415;
std::cout << std::setprecision(2) << f;
However, "precision" is not the same as "number of decimal places", as shown in this example.
Fortunately, and somewhat confusingly, switching the stream to "fixed-point" display changes the meaning of std::setprecision to something more akin to "setDecimalPlaces".
So, you can write this:
float f = 3.1415;
std::cout << std::fixed << std::setprecision(2) << f;
 
    
    hope this helps.........
#include <iostream>
#include <iomanip>
using namespace std;
int main () {
  double f =3.14159;
  cout << setprecision (5) << f << endl;
  cout << setprecision (9) << f << endl;
  cout << fixed;
  cout << setprecision (5) << f << endl;
  cout << setprecision (9) << f << endl;
  return 0;
}
output..
> 3.1416
> 3.14159
> 3.14159
> 3.141590000
 
    
    #include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    double x = 800000.0/81.0;
    cout << setiosflags(ios::fixed) << setprecision(2) << x;
    return 0;
}
 
    
    cout << ffmt(0, 2) << i;
Where ffmt is defined as:
class ffmt
{
    int width;
    int precision;
public:
    ffmt( int width, int precision )
        : width( width )
        , precision( precision )
    {
    }
    friend std::ostream& operator<<(
        std::ostream& dest,
        ffmt const& manip )
    {
        dest.setf( std::ios_base::fixed, std::ios_base::floatfield );
        dest.width( width );
        dest.precision( precision );
    }
};
You can also extend this to restore format state at the end of the full expression; it's not too important for floating point, because most of the time, you'll use the manipulator in front of each output, but a manipulator which leaves the stream outputting hex is likely to lead to surprising output later.
As a general rule, except for quicky demo or test programs, you almost
never use the standard manipulators, other that std::setw.  For that
matter, in a lot of applications, you'll even avoid things like ffmt,
in favor of specific manipulators for each semantic value you have.
