搜索
bottom↓
回复: 23

求助:怎么把一个浮点数转换成字符串呀?请各位兄弟给一个方法或者代码吧

[复制链接]

出0入0汤圆

发表于 2004-12-24 14:32:25 | 显示全部楼层 |阅读模式
我想把我用ad测到的电压,转换成字符串显示出来。   请各位兄弟给一个方法或者代码,把浮点数转换成字符串

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
头像被屏蔽

出0入0汤圆

发表于 2004-12-24 14:46:04 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2004-12-24 14:50:45 | 显示全部楼层
定义一个字符数组。

使用fprintf就可以,,我以前一直这样做的。

出0入0汤圆

 楼主| 发表于 2004-12-24 14:55:28 | 显示全部楼层
to tugen

        大哥,你能具体点吗? 我是新手,fprintf是一个自定义的函数吗?
头像被屏蔽

出0入0汤圆

发表于 2004-12-24 15:47:46 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2004-12-24 16:06:40 | 显示全部楼层
哦,,我上面写错了,,是sprintf,,,的确很占用空间的,,再说,又有浮点运算,,,M8看来是危险。
头像被屏蔽

出0入0汤圆

发表于 2004-12-24 16:13:23 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

 楼主| 发表于 2004-12-24 16:49:40 | 显示全部楼层
想不到一个浮点数都这么复杂。 那请问 armork 兄: 网站做充电器 你是用什么方法把电流和电压显示在lcd上呢?   



我的想法是:把ad采集的值转换成10进制,然后再把基准和分压算进去, 然后再转换成字符串 用lcd显示出来

出0入0汤圆

发表于 2004-12-24 17:01:34 | 显示全部楼层
考虑用signed long吧, 可表示的值+/-2147483648. 小数点位置自行定义. 超出此值的应用极少. 相应的计算及显示容易处理得多. 浮点数用在单片机过于奢侈了, 用来考机还差不多.

出0入0汤圆

发表于 2004-12-24 17:03:34 | 显示全部楼层
把浮点数乘个1000之类的(根据你需要的位数),然后转成整型,然后再一位一位地mod出来,这样应该可以省很多程序空间。

出0入0汤圆

 楼主| 发表于 2004-12-24 17:08:41 | 显示全部楼层
小数点怎么定义呢?jackycg 大哥 你有没有做过类似的列子,指点一下小弟嘛!



总的说来,我就是想把ad采集的数据 考虑了基准和分压后 在lcd上显示  就像是网站上的充电器一样,显示当时的充电电流,和电压

出0入0汤圆

发表于 2004-12-24 17:36:27 | 显示全部楼层
思路这样: 先设定1个最小的单位,如0.001V  单片机内用整数1表示. 这样,电压1.5V的代表数为1500. 这样所有的数学_运算可以用整数代替. 只要不超出singed long的值域.这样做完全可行.

显示处理: 例如要显示3.456V 让其代表的数3456做16进制数转10进制处理得出数组digi[0]=3, digi[1]=4, digi[2]=5, digi[3]=6. 在显示digi[0]后. 接着显示小数点,然后显示digi[1]~digi[3]的值.这样就可以完全避开浮点数了.

出0入0汤圆

 楼主| 发表于 2004-12-24 20:23:06 | 显示全部楼层
谢谢 jackycg大哥, 我有点点眉目了 , 明天上班试一下

出0入0汤圆

发表于 2005-10-19 15:29:15 | 显示全部楼层
最近发现ICC的sprint不怎么好用了,我用MEGA128 所以占空间是小事 关键是最近发现 以前工作正常的 SPRINTF输出不了字符了 而且在我的程序中用了好多SPRINTF 但是只有一条SPRINTF语句工作不正常 本来是想用SPRINTF把浮点输出到数组里的 结果现在只能自几做程序完成了 不能用SPRINTF还有个坏处是原来SPRINTF中的格式输出控制不能用了 所以现在输出的数据都变成左对齐的了 非常难看 不知道有没有好的解决办法。
-----此内容被igoal于2005-10-20,14:08:36编辑过

出0入0汤圆

发表于 2005-10-19 19:34:23 | 显示全部楼层
我写了一点关于浮点转字符串的东西,不过还没写完,先放上来,到时写完了在重新发贴

《如何在单片机中处理浮点数》

点击此处打开armok0179606.pdf

出0入0汤圆

发表于 2007-12-15 12:03:18 | 显示全部楼层
ok

出0入0汤圆

发表于 2007-12-17 19:29:18 | 显示全部楼层
转换代码自己写吧,用了库函数,最后还是要自己写的好。
浮点就别用了,用了你会后悔,动下老筋变通下就行了。
除法尽量少用,乘法也尽量少用。
开方就更别提了。
一个unsigned long 开方 我自己写了个二分法开方的程序(16M M16 要400~500uS)都比 sqrt 快。

出0入0汤圆

发表于 2014-2-25 18:19:05 | 显示全部楼层
用sprintf太浪费了,我是这样的,先把数字给拆分开,然后用ASCII转换成字符,然后最后存入一个数组,然后你懂的吧?

出0入0汤圆

发表于 2014-2-25 18:44:29 | 显示全部楼层
成功了 楼主分享下啊

出0入0汤圆

发表于 2014-11-10 13:27:02 | 显示全部楼层
Jacky 发表于 2005-10-19 19:34
我写了一点关于浮点转字符串的东西,不过还没写完,先放上来,到时写完了在重新发贴

《如何在单片机中处理 ...

keil中的代码写好了吗?遇到这个问题了,将浮点数转换成16进制字符,符合IEEE754。
求代码,谢谢

出0入0汤圆

发表于 2014-11-11 19:49:27 | 显示全部楼层
谢谢分享!!!!!!

出0入0汤圆

发表于 2014-11-17 21:19:13 | 显示全部楼层
04年的老帖子,那是的我还是个初中生

出0入0汤圆

发表于 2014-11-17 21:27:39 | 显示全部楼层
04年,我刚读初一....那个时候单片机听都没听过。

出0入0汤圆

发表于 2016-2-23 14:34:15 | 显示全部楼层
04年,那时候我还年少无知
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-12 06:30

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表