Как я могу напечатать (то есть на стандартный вывод) 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?