Printf переменное число десятичных знаков в float

Я нашел интересный формат для печати бесконечных строк фиксированной длины следующим образом:

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

Итак, я думаю, может быть, есть путь под командой printf для печати числа с плавающей точкой...

"% 8.2f"

чтобы иметь возможность выбирать число десятичных знаков с целым числом.

Что-то вроде этого:

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

EDIT - Решение:
(для округления и очистки числа с плавающей точкой до желаемой точности).

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

Ответы

Ответ 1

Вы также можете использовать ".*" с плавающими точками, см. также http://www.cplusplus.com/reference/cstdio/printf/ (относится к С++, но спецификаторы формата похожи)

.number: для спецификаторов a, A, e, E, f и F: это число цифр, которое должно быть после десятичной точки (по умолчанию это 6).

...

. *. Точность не указана в строке формата, а как дополнительный аргумент целочисленного значения, предшествующий аргументу, который должен отформатировать.

Например:

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

Вывод:

42.35

Ответ 2

Для этого также можно использовать звездочку, как для ширины поля, так и для точности:

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

См. эта ссылка.