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