打印不出浮点数
我的平台是Xscale ixp425+snapgear linux
printf("%f\n",2.5);
输出结果是00000
我在编译中加了 -msoft-float和-mhard-float都不行
请问如何解解决,谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我的平台是Xscale ixp425+snapgear linux
printf("%f\n",2.5);
输出结果是00000
我在编译中加了 -msoft-float和-mhard-float都不行
请问如何解解决,谢谢!
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(6)
先确认一下,程序怎么写的?
貌似kernel中不能做浮点运算。
他的代码好像不是内核里面跑的
不是不能,而是不要
这个平台没用过,不敢妄说,只讲原来遇到的问题供参考。我原来使用VxWorks+PPC时遇到过类似的问题,最终发现是库的问题:VxWorks在支持浮点寄存器的某款PowerPC上只提供了基于硬浮点的printf库,但当时因为一些原因我们必须使用-msoft-float,导致浮点运算虽然是OK的,但printf调用中浮点参数的传递不对而无法打印结果(偶尔还会导致异常)。后来因为值都不太大(一个速率值)我们改为自己把计算结果转换为两部分定点再模拟显示为浮点搞定了。
其实也可以自己重新编译printf,但VxWorks中对于printf中浮点显示的处理有些怪,依赖于一个全局的钩子(或变量?希望没记错),当时折腾了一下挺麻烦的,再加上GCC是基于文件为单位连接的,要自己实现printf就要实现它同一个.o的所有函数,就没再做下去。