In algorithm competitions, there are sometimes problems that require the solution to keep certain amount of decimal places, for example (when keeping 2 decimal places) the output for 3
is 3.00
and the output for 3.1415926
is 3.14
.
However, std::setprecision
cannot meet the requirement, as it controls the amount of effective numbers instead of decimal places. For example, the following code
std::cout << set::precision(5) << 123.456;
actually produces the output
123.46
instead of the expected
123.45600
And what is really required is the exactly same output as the following printf
does:
printf("%.5lf", 123.456);
So how can I keep certain amount of decimal places, instead of effective numbers, in C++? In my view, printf
may not be a good idea, because personally I think printf
exists in C++ only for compatibility reasons.