// Overloaded functions example
#include
<iostream>
#include
<iomanip>
#include
<cmath>
using namespace std;
// specify number of decimal places
void
printDouble(double value, int decPlaces = -1);
// specify width and number of decimal places
void
printDouble(double value, double format);
int main()
{
// calls to the first function
printDouble(0);
printDouble(1.5);
printDouble(123456.789);
printDouble(123456.789,2);
printDouble(3.141592654,5);
// calls to the second function
printDouble(3.14,10.5);
printDouble(3.14,10.0);
printDouble(3.14159265359,16.7);
printDouble(3.14159265359,16.8);
printDouble(3.14159265359,16.9);
}
void
printDouble(double value, int decPlaces)
{
if (decPlaces < 0) {
cout << value << endl;
}
else {
cout << setprecision(decPlaces) << fixed
<< value << endl;
}
}
// format assumed to
be a decimal number representing
//
width.decimal_places
void
printDouble(double value, double format)
{
if (format < 0)
cout << value << endl;
else
{
int width = static_cast<int>(format);
// lround() available in
gnu compilers, not available in MS Visual C++
int decplaces = lround(10.0 * (format - width));
cout << setw(width) <<
setprecision(decplaces) << fixed << value
<< endl;
}
}
***** OUTPUT ******
0
1.5
123457
123456.79
3.14159
3.14000
3
3.1415927
3.14159265
3.141592654