115 votes

C : printf une valeur flottante

Je veux imprimer une valeur flottante qui a 2 chiffres entiers et 6 chiffres décimaux après la virgule. Si j'utilise simplement printf("%f", myFloat) J'obtiens une valeur tronquée.

Je ne sais pas si cela se produit toujours en C, ou si c'est juste parce que j'utilise le C pour les microcontrôleurs (CCS pour être exact), mais à la référence il est dit que %f n'obtiennent que cela : un flotteur tronqué.

Si mon flotteur est 44.556677 J'imprime "44.55" seulement les deux premiers chiffres décimaux.

La question est donc la suivante : comment puis-je imprimer mes 6 chiffres (et seulement les six, au cas où il y aurait des zéros après ou autre) ?

209voto

Beginner Points 3096

Vous pouvez le faire comme ça :

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

6 représente le nombre de chiffres après le séparateur décimal.

34voto

dasblinkenlight Points 264350

printf("%9.6f", myFloat) spécifie un format comportant 9 caractères au total : 2 chiffres avant le point, le point lui-même et six chiffres après le point.

9voto

rohit Points 88
printf("%0k.yf" float_variable_name)

Ici k est le nombre total de caractères que vous voulez faire imprimer. k = x + 1 + y ( + 1 pour le point) et float_variable_name est la variable flottante que vous voulez faire imprimer.

Supposons que vous souhaitiez imprimer x chiffres avant le point décimal et y chiffres après. Si le nombre de chiffres précédant le nom de la variable flottante est inférieur à x, la variable sera automatiquement précédée d'autant de zéros.

8voto

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

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

5voto

Essayez ceci pour clarifier la question de l'alignement correct dans l'impression en virgule flottante.

printf(" 4|%4.1lf\n", 8.9);
printf("04|%04.1lf\n", 8.9);

le résultat est

 4| 8.9
04|08.9

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X