Search code examples
c++iostreamscientific-notation

Prevent scientific notation in ostream when using << with double


I need to prevent my double to print in scientific notation in my file,

when I do this

outfile << X;

Solution

  • To set formatting of floating variables you can use a combination of setprecision(n), showpoint and fixed. In order to use parameterized stream manipulators like setprecision(n) you will have to include the iomanip library:

    #include <iomanip>
    

    setprecision(n): will constrain the floating-output to n places, and once you set it, it is set until you explicitly unset it for the remainder of the stream output.

    fixed: will enforce that all floating-point numbers are output the same way. So if your precision is set to 4 places, 6.2, and 6.20 will both be output as:

    6.2000
    6.2000
    

    showpoint: will force the decimal portions of a floating-point variable to be displayed, even if it is not explicitly set. For instance, 4 will be output as:

    4.0
    

    Using them all together:

    outfile << fixed << showpoint;
    outfile << setprecision(4);
    outfile << x;