Reputation: 13244
I want to print a float value which has 2 integer digits and 6 decimal digits after the comma. If I just use printf("%f", myFloat)
I'm getting a truncated value.
I don't know if this always happens in C, or it's just because I'm using C for microcontrollers (CCS to be exact), but at the reference it tells that %f
get just that: a truncated float.
If my float is 44.556677
, I'm printing out "44.55"
, only the first two decimal digits.
So the question is... how can I print my 6 digits (and just the six of them, just in case I'm having zeros after that or something)?
Upvotes: 128
Views: 904447
Reputation: 10726
printf("%.<number>f", myFloat) //where <number> - digit after comma
https://cplusplus.com/reference/cstdio/printf/
Upvotes: 10
Reputation: 61
Try these to clarify the issue of right alignment in float point printing
printf(" 4|%4.1lf\n", 8.9);
printf("04|%04.1lf\n", 8.9);
the output is
4| 8.9
04|08.9
Upvotes: 6
Reputation: 9002
You can do it like this:
printf("%.6f", myFloat);
6 represents the number of digits after the decimal separator.
Upvotes: 224
Reputation: 330
printf("%0k.yf" float_variable_name)
Here k
is the total number of characters you want to get printed. k = x + 1 + y
(+ 1
for the dot) and float_variable_name
is the float variable that you want to get printed.
Suppose you want to print x digits before the decimal point and y digits after it. Now, if the number of digits before float_variable_name is less than x, then it will automatically prepend that many zeroes before it.
Upvotes: 10
Reputation: 726479
printf("%9.6f", myFloat)
specifies a format with 9 total characters: 2 digits before the dot, the dot itself, and six digits after the dot.
Upvotes: 42