Форматирование значения с плавающей точкой на языке Си
Мне нужно распечатать .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);