user6720691 - 1 year ago 66
C Question

# How to let user decide how many decimal places they want printed in their float?

How would I make a program allow the user to choose how many decimal spaces they would like to see printed in their float value?

For example, the following code

``````#include <stdio.h>
int main(){
float x;
x = 0.67183377;
printf("%.2f\n", x);
}
``````

Would give us an output of
`0.67`
.But what if the user wanted to see the full number, or up to the fourth decimal place, for example. How would they do this?

See `printf()` for the details. Use:

``````printf("%.*f\n", n, x);
``````

where `n` is an `int` that contains the number of decimal places to be printed. Note that a `float` can only really hold about 6-7 decimal digits; the 8th one in the example will be largely irrelevant.

``````#include <stdio.h>

int main(void)
{
float x = 0.67183377;
for (int n = 0; n < 10; n++)
printf("%.*f\n", n, x);
return(0);
}
``````

Example output:

``````1
0.7
0.67
0.672
0.6718
0.67183
0.671834
0.6718338
0.67183375
0.671833754
``````

The value is converted to a `double` before it is passed to `printf()` because that happens with all variadic functions. When `x` is changed to a `double`, the output is:

``````1
0.7
0.67
0.672
0.6718
0.67183
0.671834
0.6718338
0.67183377
0.671833770
``````
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download