打印

请教snprintf输出浮点数的问题

[复制链接]
4246|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

粉丝