C: printf a float value

CFloating Point

C Problem Overview


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)?

C Solutions


Solution 1 - C

You can do it like this:

printf("%.6f", myFloat);

6 represents the number of digits after the decimal separator.

Solution 2 - C

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.

Solution 3 - C

printf("%.<number>f", myFloat) //where <number> - digit after comma

http://www.cplusplus.com/reference/clibrary/cstdio/printf/

Solution 4 - C

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.

Solution 5 - C

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

Solution 6 - C

Use %.6f. This will print 6 decimals.

Solution 7 - C

You need to use %2.6f instead of %f in your printf statement

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionRoman RdgzView Question on Stackoverflow
Solution 1 - CRoman ByshkoView Answer on Stackoverflow
Solution 2 - CSergey KalinichenkoView Answer on Stackoverflow
Solution 3 - CIgor ShubinView Answer on Stackoverflow
Solution 4 - CrohitView Answer on Stackoverflow
Solution 5 - CRoberto A. FogliettaView Answer on Stackoverflow
Solution 6 - CCharlie BrownView Answer on Stackoverflow
Solution 7 - CShankar RajuView Answer on Stackoverflow