[ZLG-ARM] 【求助】在ads中如何将字符串转化为float等数值类型?

[复制链接]
3914|9
 楼主| arzhiy 发表于 2007-4-6 09:59 | 显示全部楼层 |阅读模式
【求助】在ads中如何将字符串转化为float等数值类型?<br />例如<br />char&nbsp;TempStr[]&nbsp;=&nbsp;&quot;-36.321&quot;;<br />float&nbsp;TempFloat;<br /><br />要求转换结果是<br />&nbsp;&nbsp;TempFloat&nbsp;=&nbsp;-36.321;<br /><br />谢谢
high 发表于 2007-4-6 10:13 | 显示全部楼层

stdlib.h

atof()<br />strtod()<br /><br />浮点得小心使用。
rockos 发表于 2007-4-6 10:14 | 显示全部楼层

re

ads提供的浮点数转换函数有些小bug,&nbsp;printf/atof都有问题,&nbsp;你得自己写一个.<br /><br />从字符串向浮点数的转换也就简简单单不足百行,&nbsp;如果这个都伸手给人要的话就有点太“那个”了……<br /><br />
 楼主| arzhiy 发表于 2007-4-6 10:55 | 显示全部楼层

哈哈

<br />1、首先谢谢二楼的帮助<br />&nbsp;&nbsp;可以用,只是我希望对于如果字符串中有多个非数值字符时需要报错,例如“-20.63ab”为错误的,而上面两个函数均输出-20.6300。<br /><br />2、再谢谢三楼的批评<br />&nbsp;&nbsp;&nbsp;&nbsp;不过对于现在很多有现成的库和函数的程序,我认为无需自己编写,可以有更多的时间做别的。我以前一直自己编写数字转字符串的函数,后来有网友告诉我可以用sprintf,用了之后发现很不错的。
rockos 发表于 2007-4-6 11:06 | 显示全部楼层

re

ADS库中的浮点&lt-&gt文本转换函数都有问题,&nbsp;你可以在板上试一下代码片断:<br /><br />char&nbsp;buff[128];<br />sprintf(&buff[0],&nbsp;&quot;%f&quot;,&nbsp;3.14159);<br />printf(&quot;%02x&nbsp;%02x&nbsp;%02x&nbsp;%02x&nbsp;%02x&nbsp;%02x&nbsp;%02x
&quot;);<br /><br />和<br /><br />char&nbsp;buff[128]=&quot;3.14159&quot;;<br />double&nbsp;val;<br />val&nbsp;=&nbsp;100000.&nbsp;*&nbsp;atof(&buff[0]);<br />printf(&quot;%d&quot;,&nbsp;val);<br /><br />注意一定要在ARM板上跑,&nbsp;不要使用simulator(使用armsimulator运行以上代码不会有任何问题,&nbsp;因为armsimulator上使用了不同的浮点实现).<br /><br />如果我没有记错,&nbsp;第一个片断的结果应当是:<br />33&nbsp;<font color=#FF0000>5e</font>&nbsp;31&nbsp;34&nbsp;31&nbsp;35&nbsp;39<br />小数点(ASCII&nbsp;0x2E)变成其它值了.<br /><br />第二个片断的结果应当是:<br />3<font color=#FF0000>00000</font><br />小数点后的值会被全部截断.<br />
 楼主| arzhiy 发表于 2007-4-6 11:17 | 显示全部楼层

re rockos

<br />rockos:<br />&nbsp;&nbsp;&nbsp;&nbsp;你上面printf函数是自己编写的还是用的stdio.h中的?这个函数我在使用中是自己编写的
high 发表于 2007-4-6 11:21 | 显示全部楼层

rocket

注意编译选项,获得浮点库支持
high 发表于 2007-4-6 11:21 | 显示全部楼层

rocket

注意编译选项,获得浮点库支持
rockos 发表于 2007-4-6 12:00 | 显示全部楼层

.

<br />to&nbsp;high,&nbsp;在ADS中使用浮点函数不需要显式地指定浮点库,&nbsp;但是gcc需要,&nbsp;估计你用gcc用惯了.<br /><br />to&nbsp;arzhiy,&nbsp;自己试一下就知道你的printf是不是也有类似的问题,&nbsp;这个问题明显是ADS库的bug.
high 发表于 2007-4-6 14:12 | 显示全部楼层

ads1.2默认的是-fpu none

记得一共8个选项,我想你可以尝试一下。手册里面有详细描述。<br /><br />----<br />我想,标准库出错的机会很小,何况这么明显的错误。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

64

帖子

1

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