Printf nombre variable de décimales dans float

J’ai trouvé un format intéressant pour imprimer des chaînes de longueur fixe non distinées comme ceci:

char newstr[40] = {0}; sprintf(newstr,"%.*s", sizeof(mystr), mystr); 

Donc, je pense que la commande printf permet peut-être d’imprimer un nombre à virgule flottante …

“% 8.2f”

pouvoir choisir le nombre de décimales avec un nombre entier.

Quelque chose comme ça:

 sprintf(mystr, "%d %f", numberofdecimals, floatnumbervalue) 

EDIT – Solution:
(pour arrondir et effacer un numéro de flottant avec la précision désirée).

 int precision = 2; char kolf[16] = {0}; sprintf(kolf, "%8.*f", precision, mystruct.myfloat); float kol = atof(kolf); 

Vous pouvez également utiliser ".*" Avec des points flottants, voir aussi http://www.cplusplus.com/reference/cstdio/printf/ (fait référence à C ++, mais les spécificateurs de format sont similaires)

.number : Pour les spécificateurs A, A, E, F et F: il s’agit du nombre de chiffres à imprimer après le point décimal (par défaut, il s’agit de 6).

. * : La précision n’est pas spécifiée dans la chaîne de format, mais sous la forme d’un argument de valeur entière supplémentaire précédant le paramètre à formater.

Par exemple:

 float floatnumbervalue = 42.3456; int numberofdecimals = 2; printf("%.*f", numberofdecimals, floatnumbervalue); 

Sortie:

 42.35 

Vous pouvez également utiliser l’astérisque pour la largeur et la précision du champ:

 printf("%*.*f\n", myFieldWidth, myPrecision, myFloatValue); 

Voir par exemple cette référence .