Форматирование значения с плавающей точкой на языке Си

Мне нужно распечатать .5 как 0.5 с использованием printf Выписка на языке Си. Это можно легко сделать с помощью следующего кода.

printf("%03f", myfloatvalue);

Но ситуация myfloatvalue динамично Так что я не уверен, что это 3-значный символ, это может быть .5 или же .56 или же .567, В вышеуказанных случаях мне нужно распечатать как 0.5, 0.56, а также 0.567,

2 ответа

Решение

Продолжая мой комментарий к ответу Флориана, формат "%0g" напечатает кратчайшее представление с начальным нулем, например

#include <stdio.h>

int main (void) {

    float f[] = { .5, .56, .567 };
    size_t n = sizeof f/sizeof *f;

    for (size_t i = 0; i < n; i++)
        printf ("%0g\n", f[i]);

    return 0;
}

Пример использования / Вывод

$ ./bin/floatfmt
0.5
0.56
0.567

%g выдает кратчайшее из возможных представлений с плавающей точкой

printf("%g",myfloatvalue);
Другие вопросы по тегам