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 ...
Get C++ Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.