请教snprintf输出浮点数的问题

[复制链接]
5298|2
 楼主| EAMCU 发表于 2012-3-4 13:05 | 显示全部楼层 |阅读模式
使用snprintf把整数转换成字符串输输出,用%d,一直没有错误
使用snprintf把浮点数转换成字符串输出,用%m.nf,大多数情况下正常,偶尔会出现错误,而且对同一个浮点数出现错误后的值一样

如下程序,就是偶尔会出错的方式
char ReplySting[40] = "12345678901234567890123456789012345678\r\0";
float myfloat = 25.55;
snprintf(ReplyString, sizeof(ReplyString), "Value=%2.2f\r", myfloat);

如果把最后一句换成如下的方法,就一直没有错误
snprintf(ReplyString, sizeof(ReplyString), "Value=%d.%2d\r", (int)myfloat, (int)(myfloat*100 - (int)myfloat*100));

为什么呢?
环境:mdk3.8 + stm32 V3.3库 + stm32f107
adce 发表于 2012-3-4 17:33 | 显示全部楼层
不可重入...
不要用%f
 楼主| EAMCU 发表于 2012-3-5 09:57 | 显示全部楼层
2# adce

请问,这种错误出现时,除了出现转换成的字符串出错外,还有其他危险么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

38

主题

396

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部