我使用的是BK7231N的SDK,因为坑网没有对应的板块,就在同是WIFI模块的ESP32/ESP8266板块发个帖求助,以下是日志截图,第一次会出现转换结果为0的情况,后面就正常了。
在线
现在都流行提问说一半不说一半让大家猜谜吗?
atof("000000003.1")的结果为0
在线
是不是超出float类型数据范围,用double试试
离线
海石生风 说:现在都流行提问说一半不说一半让大家猜谜吗?
atof("000000003.1")的结果为0
你单个写个C源码测试,结果是正确的吧。是你实际调用有问题,不是atof("000000003.1")问题。
提问最好要把怎么使用的细节列出来。不要一开始就怀疑一个很多人在用且用了很多年的C库有问题。
#include <stdio.h>
#include <stdlib.h>
int main()
{
double d = atof("000000003.1");
printf("d = %f\n", d);
return 0;
}
PS:标准的C库atof返回的是一个double,printf的"%f"接受的是一个double,其他C库特别是MCU平台的C库要另行确认是否有不同。
最近编辑记录 海石生风 (2024-01-21 18:41:27)
离线
楼主的SDK在哪里下载的?
离线
第一次不对,以后就正常?
离线
是不是超出float类型数据范围,用double试试
实际使用的类型也是double
在线
楼主的SDK在哪里下载的?
这个是移远WIFI模块的SDK,他们也没测出来,所以在坛子里向各位大佬请教一下
在线
第一次不对,以后就正常?
是啊,以前用这个函数从来没有出过问题,在WIFI模块上掉用这个函数就出了问题
在线
感谢各位大佬,这个问题我通过其他方式避开了,初步估计是SDK底层的问题
在线