Как я могу печатать (то есть to stdout) float в C без , чтобы он был повышен до double при передаче в printf?
Проблема здесь в том, что вариативные функции в C преобразовать все параметры float в double , что влечет за собой два ненужных преобразования. Например, если вы включите -Wdouble-promotion в GCC и скомпилируете
float f = 0.f;
printf("%f", f);
, вы получите
warning: implicit conversion from 'float' to 'double' when passing argument to function
У меня относительно небольшая вычислительная мощность (процессор ARM Cortex-M3 с частотой 72 МГц), и я я определенно узкое место в ASCII выводе данных с плавающей запятой. Поскольку в архитектуре изначально отсутствует аппаратный FPU, необходимость преобразования между одинарной и двойной точностью не помогает.
Есть ли способ более эффективно печатать число с плавающей запятой на прямом C?