C中浮点数的Printf

问题描述 投票:1回答:1

我实际上是尝试使用atmel std在c语言中打印一个浮点数,而不是打印值,它只是给我“ f”。谁知道为什么会这样吗?

代码:

  float dist = 2.0*3.14*0.25*count;

  printf("counter : %d\n",count);
  printf("dist : %f\n", dist);

所以,计数器实际上是一个不稳定的长整数,在我的硬件上单击按钮后更新,认为它正常工作,它的打印正确,但是dist的打印不正确,它给了我这个:

dist : f
counter : 12
dist : f
counter : 12
dist : f
counter : 12
dist : f
counter : 12
dist : f
counter : 12
dist : f

即使我尝试打印0.25像:

printf("%f\n",0.25);

它给我输出“ f”here 's the compiler output

c atmel
1个回答
0
投票

为了使printf支持浮点输出,它需要包括相当大量的代码(数千字节),这对于使用printf但不使用它来输出的许多应用程序完全是无用的浮点数字。如果代码输出浮点数,则某些工具链会尝试自动链接为printf的全功能版本,如果没有输出则为最小的链接,但是某些工具链要求用户手动选择[ C0]使用。

请注意,如果代码空间很重要,请使用类似以下的结构:

printf

并且避免在/* Output a number from 0.000 to 9999.000 */ uint32_t xi = x*1000.0f + 0.5f; unsigned units = xi/1000; unsigned frac = xi - (units*1000); sprintf(out, "%4u.%03u", units, frac); 中使用浮点格式可以避免使用更大的printf库,而使用的代码空间比该库所消耗的少得多。

© www.soinside.com 2019 - 2024. All rights reserved.