Ваш спецификатор формата неверен. Со страницы руководства printf()
на моем компьютере:
0
Нулевой символ '0
', указывающий, что следует использовать заполнение нулями, а не заполнение пробелами. A -
переопределяет '0
', если используются оба;
Ширина поля:
Необязательная цифровая строка, указывающая ширина поля ; если выходная строка содержит меньше символов, чем ширина поля, она будет дополнена пробелами слева (или справа, если был задан индикатор регулировки слева), чтобы составить ширину поля (обратите внимание, что начальный ноль является флагом, но встроенный ноль является частью ширины поля);
Точность: необязательный период, '.
', за которым следует необязательная цифровая строка, дающая точность, которая задает количество цифр после десятичной точки, для e * 1027 форматы * и f или максимальное количество символов, которое будет напечатано из строки; если строка цифр отсутствует, точность обрабатывается как ноль;
В вашем случае ваш формат будет %09.3f
:
#include <stdio.h>
int main(int argc, char **argv)
{
printf("%09.3f\n", 4917.24);
return 0;
}
Выход:
$ make testapp
cc testapp.c -o testapp
$ ./testapp
04917.240
Обратите внимание, что этот ответ обусловлен тем, что ваша встроенная система имеет реализацию printf()
, которая совместима со стандартами для этих деталей - многие встроенные среды не не имеют такой реализации.