10.2. Formatting Floating-Point Output
Problem
You need to present floating-point output in a well-defined format, either for the sake of precision (scientific versus fixed-point notation) or simply to line up decimal points vertically for easier reading.
Solution
Use the standard manipulators provided in <iomanip> and <ios> to control
the format of floating-point values that are written to
the stream. There are too many combinations of ways to cover here, but Example 10-3 offers a few different ways to
display the value of pi.
Example 10-3. Formatting pi
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
int main() {
ios_base::fmtflags flags = // Save old flags
cout.flags();
double pi = 3.14285714;
cout << "pi = " << setprecision(5) // Normal (default) mode; only
<< pi << '\n'; // show 5 digits, including both
// sides of decimal point.
cout << "pi = " << fixed // Fixed-point mode;
<< showpos // show a "+" for positive nums,
<< setprecision(3) // show 3 digits to the *right*
<< pi << '\n'; // of the decimal.
cout << "pi = " << scientific // Scientific mode;
<< noshowpos // don't show plus sign anymore
<< pi * 1000 << '\n';
cout.flags(flags); // Set the flags to the way they were
}This will produce the following output:
pi = 3.1429 pi = +3.143 pi = 3.143e+003
Discussion
Manipulators that specifically manipulate floating-point output divide into two categories. There are those that set the format, which, for the purposes of this recipe, set the general appearance ...