Подтвердить что ты не робот

Printf с ведущими нулями в C

У меня есть число с плавающей запятой, например 4917.24. Я бы хотел напечатать его, чтобы всегда иметь пять символов до десятичной точки с начальными нулями, а затем три цифры после десятичной точки.

Я попробовал printf("%05.3f", n) во встроенной системе, которую я использую, но печатает *****. У меня есть спецификатор формата?

4b9b3361

Ответ 1

Указатель формата неверен. На странице printf() man на моей машине:

0 Символ "ноль" 0 ', указывающий, что вместо заполнения пробела следует использовать нулевое дополнение. A - 'переопределяет' 0 ', если оба используются;

Ширина поля: Дополнительная строка цифр, определяющая ширину поля; если выходная строка имеет меньше символов, чем ширина поля, она будет заполнена пустым слева (или справа, если указатель левой настройки был задан), чтобы составить ширину поля (обратите внимание, что начальный ноль является флагом, но встроенный нуль является частью ширины поля);

Точность: необязательный период, . ', за которым следует дополнительная строка цифр, дающая точность, которая указывает количество цифр, которые будут отображаться после десятичной точки, для e и 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(), стандартную для этих деталей - многие встроенные среды не имеют такой реализации.