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

Формат printf с плавающей запятой

Следующий тестовый код создает нежелательный вывод, хотя я использовал параметр ширины:

int main(int , char* [])
{
    float test = 1234.5f;
    float test2 = 14.5f;

    printf("ABC %5.1f DEF\n", test);
    printf("ABC %5.1f DEF\n", test2);

    return 0;
}

Выход

ABC 1234.5 DEF   
ABC  14.5 DEF

Как получить такой вывод, какую строку формата использовать?

ABC 1234.5 DEF   
ABC   14.5 DEF
4b9b3361

Ответ 1

Следующее должно правильно настроить все:

printf("ABC %6.1f DEF\n", test);
printf("ABC %6.1f DEF\n", test2);

Когда я запускаю это, я получаю:

ABC 1234.5 DEF
ABC   14.5 DEF

Проблема заключается в том, что в %5.1f 5 указано количество символов, выделенных для всего числа, а 1234.5 - более пяти символов. Это приводит к несоосности с 14.5, которая соответствует пяти символам.

Ответ 2

Вы пытаетесь напечатать что-то более 5 символов, поэтому сделайте спецификатор длины больше:

printf("ABC %6.1f DEF\n", test);
printf("ABC %6.1f DEF\n", test2);

Первое значение не "цифры перед точкой", а "общая длина".