iar中k60的sprintf函数的浮点型

2020-02-19 21:17发布

sprintf(str,"%6.3f",4.123);
        LCD_P6x8Str(90,5,str);
最后就一直显示个   f     不知道为什么  明显浮点就不认呀
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
子鱼
1楼-- · 2020-02-19 23:25
 精彩回答 2  元偷偷看……
子鱼
2楼-- · 2020-02-20 05:09
应该是IAR编译器的问题,查了相关资料,是说在option中设置一下:
General option中的library configuration ,libray 选为full
library option 中的printf formatter 选择为full。
原因如下:
根本原因在于库中的printf, sprintf等函数的版本问题,由于支持全格式的时候占用的代码量和堆栈空间比较大,一般编译器默认都是实现标准甚至是最小的版本。
在不同的平台上,几种不同的版本支持的格式不一样,举个例子:
1)最小版本的printf仅支持整形格式化转义符%d以及字符串。

2)标准版本的printf支持除浮点外的其他格式,比如hex等等
3)全版本的printf支持所有格式包括%f浮点

可以参考一下这个链接:
IAREWARM 6.30 sprintf函数转换浮点数时出错 :http://www.amobbs.com/thread-5182148-1-1.html
qs6361036
3楼-- · 2020-02-20 10:57
有这种问题  ,还真没注意  ,一直直接用sprintf() ,不过好像没用浮点数 。 受教啦
fengyunyu
4楼-- · 2020-02-20 14:16
最好不用浮点数,占用堆栈空间比较大。
richyhuang
5楼-- · 2020-02-20 17:03
iar是自己实现的printf,不是标准库的.
Ray______
6楼-- · 2020-02-20 22:30
 精彩回答 2  元偷偷看……

一周热门 更多>