c - 使用 %f 打印 double 变量,终端显示 "?"

标签 c printf double

我完全不知道如何处理这个问题。我不太熟悉 C 语言,但我知道足够为我的 Atmel MCU 进行控制项目编程。我遇到了一个问题,我尝试打印双变量,但得到的只是问号而不是值。这是一些代码:

axg = ax/MPU6050_AXGAIN;
ayg = ay/MPU6050_AYGAIN;
azg = az/MPU6050_AZGAIN;
gxds = gx/MPU6050_GXGAIN;
gyds = gy/MPU6050_GYGAIN;
gzds = gz/MPU6050_GZGAIN;

printf("converted\n\n");
printf(" %f;\n\n %f;\n\n %f;\n\n %f;\n\n %f;\n\n f;\n\n",axg,ayg,azg,gxds,gyds,gzds);

所有打印的变量都定义为 double 。 ax,ay,ay,gx,gy,gz 都是 uint16_t 变量。我正在做的是从 IMU 读取 8 位数据并将这些值存储在 ax 等中。然后我需要根据 IMU 数据表中的信息对它们进行转换(如果有人好奇,则为 MPU 6050)。有人能指出我解决此问题的方向吗?我遇到的一切都表明我应该获得值(value)观,但我不知道该去哪里寻找。

提前致谢。

这是我的终端读数

converted

?;

?;

?;

?;

?;

?;

最佳答案

听起来您正在链接的 printf 版本不支持浮点。

这通常是嵌入式系统编译器的默认配置,因为它们没有硬件 FPU,并且软件浮点支持占用了大多数应用程序不需要的宝贵空间。

请查阅您正在使用的工具链的文档,看看是否讨论了此问题。 Link to similar thread for gcc/Arduino

还要考虑是否可以重写您的代码以不使用浮点。

关于c - 使用 %f 打印 double 变量,终端显示 "?",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30452963/

相关文章:

string - 如何在 F# 中使用 printf/sprintf 将十进制格式化为具有定义精度的字符串?

arrays - Swift - 为什么我不能将一个 Double 数组 append 到另​​一个 Double 数组

c - 逐个字符打印字符串

c - 如何同时运行多个fork()?以及如何在c中使用信号量?

c - 删除和 DFS 功能无法正常工作

c - 函数似乎返回正确的值,但外部调用者永远不会在 C 中获取它

c - XCB的事件处理如何检测C中的ESC键?

c - 为什么这两种方法返回不同的东西?

c - 试图从用户那里读取 double,出现段错误

java - 将 double 数组中的一些元素复制到 double 数组列表