首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >arm-none-eabi-gcc :使用printf打印浮点数

arm-none-eabi-gcc :使用printf打印浮点数
EN

Stack Overflow用户
提问于 2012-10-03 06:53:19
回答 3查看 18.4K关注 0票数 7

我正在为SAM3N手臂皮质-M3微控制器编写一个C程序.当我试图打印浮点数时,它只打印'f‘。示例:printf("%f",43.12);只打印f,而不打印43.12

但是用整数打印很好。

如何实现浮点数的全打印?我知道编译器在默认情况下会禁用浮点打印以减少代码大小(例如,它们会链接到压缩版本)。另外,请注意,makefile中没有使用CFLAGS=-Dprintf=iprintf

工具详细信息:

  • ARM/GNU C编译器:(交叉工作台-NG1.13.1- Atmel build: 13) 4.6.1
  • 以上工具与Atmel工作室6.0。
EN

回答 3

Stack Overflow用户

发布于 2014-09-08 12:12:22

您可以尝试在链接器设置中添加以下选项吗?

-lc -lrdimon -u _printf_float

它在ARM-CORTEXM0 0中对我起作用

票数 10
EN

Stack Overflow用户

发布于 2012-10-03 08:11:03

它可以使您的平台/库不支持%f格式的printf/sprintf格式说明符。作为第一种方法,您可以将您自己的printf用于浮动/双倍:

代码语言:javascript
复制
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);
}
票数 4
EN

Stack Overflow用户

发布于 2012-10-03 07:36:01

在默认禁用浮动的编译器中,默认库能够处理它们是不寻常的。查看您的引用,您将发现有关如何重新编译具有浮点支持的适当库的信息,或者(更可能的话)在哪里找到已经用它构建的版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12703307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档