bjgs2004 发表于 2009-05-19 16:31

打印不出浮点数

我的平台是Xscale ixp425+snapgear linux
printf("%f\n",2.5);

输出结果是00000

我在编译中加了 -msoft-float和-mhard-float都不行

请问如何解解决,谢谢!

cjaizss 发表于 2009-05-19 18:52

先确认一下,程序怎么写的?

system888net 发表于 2009-05-19 21:09

:em14:

liying_gg 发表于 2009-05-19 22:08

貌似kernel中不能做浮点运算。

prolj 发表于 2009-05-20 08:06

原帖由 liying_gg 于 2009-5-19 22:08 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
貌似kernel中不能做浮点运算。
他的代码好像不是内核里面跑的

cjaizss 发表于 2009-05-20 14:57

原帖由 liying_gg 于 2009-5-19 22:08 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
貌似kernel中不能做浮点运算。
不是不能,而是不要

Cyberman.Wu 发表于 2009-06-04 13:18

这个平台没用过,不敢妄说,只讲原来遇到的问题供参考。我原来使用VxWorks+PPC时遇到过类似的问题,最终发现是库的问题:VxWorks在支持浮点寄存器的某款PowerPC上只提供了基于硬浮点的printf库,但当时因为一些原因我们必须使用-msoft-float,导致浮点运算虽然是OK的,但printf调用中浮点参数的传递不对而无法打印结果(偶尔还会导致异常)。后来因为值都不太大(一个速率值)我们改为自己把计算结果转换为两部分定点再模拟显示为浮点搞定了。
其实也可以自己重新编译printf,但VxWorks中对于printf中浮点显示的处理有些怪,依赖于一个全局的钩子(或变量?希望没记错),当时折腾了一下挺麻烦的,再加上GCC是基于文件为单位连接的,要自己实现printf就要实现它同一个.o的所有函数,就没再做下去。
页: [1]
查看完整版本: 打印不出浮点数