将字符串转换为浮点数

Convert string to float

我正在使用 AtmelStudio 在 AVR XMEGA 微控制器上编程。

我在将字符串转换为浮点数时遇到问题。该字符串名为 token2,值为 "8.604165"

我已经尝试了几个功能:

我是不是做错了什么?

默认情况下,AVR-libc 尝试在二进制文件中保存 space,而不是 link 浮点相关的内容。对于像 atof 这样的函数,这很容易,因为如果你不调用它们,那么 linker 就不会包含它们。但是,对于 printf,linker 无法判断您是否打算将其用于浮点数。

相反,AVR-libc 有多个定义 printf 的库。默认库中的 printf 除了不支持浮点数外,具有完整的功能。如果你想在你的二进制文件中保存 space 并且你没有使用 printf 的更高级的功能(即格式标志),你可以 link 和 printf_min 来替换那个更小的版本。如果要打印浮点数,则需要 printf_flt.

中定义的全功能版本

This page 描述了 linker 对 select 这些替代版本的正确选择。简而言之,将 -Wl,-u,vfprintf -lprintf_flt -lm 添加到 linker 选项中。

好的,这是微控制器特有的东西。

与@Sneftel 所说的类似,我只需要在 AtmelStudio 中添加库 libprintf_flt.alibm.a