如何在 C中打印(即到标准输出)一个浮点数,而不在传递给 printf 时将其提升为双精度值?
这里的问题是 C 中的可变参数函数将所有float参数提升为double,这会导致两次不必要的转换。例如,如果在 GCC 中打开-Wdouble-promotion并编译
float f = 0.f;
printf("%f", f);
你会得到
warning: implicit conversion from 'float' to 'double' when passing argument to function
我的处理能力相对较小(72MHz ARM Cortex-M3),而且我肯定在浮点数据的 ASCII 输出上遇到瓶颈。由于该架构一开始就缺乏硬件 FPU,因此必须在单精度和双精度之间进行转换并无济于事。
有没有办法在直 C 中更有效地打印浮点数?