我写SAM3N的ARM Cortex-M3微控制器的C程序。 当我尝试打印浮点数,它只是打印“F”。 例如: printf("%f",43.12);
打印f
只,而不是43.12
。
但随着整数打印工作正常。
如何启用浮动的完整的打印? 我知道,编译器,默认情况下,禁用浮动印刷,减少代码大小(即看起来,他们链接这个剪下来的版本)。 同时请注意,没有CFLAGS=-Dprintf=iprintf
在Makefile中。
工具的详细信息:
- ARM / GNU C编译器:(的crosstool-NG 1.13.1 - 爱特梅尔构建:13)4.6.1
- 上述工具来与Atmel Studio 6.0中。
你可以试试,在添加链接器设置下面的选项
-lc -lrdimon -u _printf_float
它在ARM-CORTEXM0为我工作
它可以让你的平台/库不支持%f
的格式说明符printf/sprintf
。 作为第一个方法,你可以滚你自己的花车/双打的printf:
void printDouble(double v, int decimalDigits)
{
int i = 1;
int intPart, fractPart;
for (;decimalDigits!=0; i*=10, decimalDigits--);
intPart = (int)v;
fractPart = (int)((v-(double)(int)v)*i);
if(fractPart < 0) fractPart *= -1;
printf("%i.%i", intPart, fractPart);
}
在彩车默认情况下禁用的编译器,这是不寻常的是,默认的库可以处理它们。 通过看你的推荐,你会发现关于如何重新编译浮点支持,或(更可能)在哪里可以找到已经构建与它的版本相应的库信息。