搜索
bottom↓
回复: 3

求助这个数据类型转换函数如何修改用于51

[复制链接]

出0入0汤圆

发表于 2013-11-16 02:33:30 | 显示全部楼层 |阅读模式
uchar *Trans_Data_To_Disp(uchar *str_ptr, float data, uchar d)
{        
        uint integral_part=0;                //整数部分
        float decimal_part=0;                //小数部分
        uint temp;
        uchar i,n;

        //整数部分
        integral_part = (uint)(data);
        
        temp=integral_part;
        n=0;
        do
        {
                n++;
                temp=(uint)(temp/10);                        //得到整数部分位数n
        }while(temp!=0);

        temp=integral_part;
        for( i=0; (i<n)&&(i<20); i++)
        {
                *(str_ptr + n-1-i)=(uchar)(temp%10) +'0';        //从低位(str_ptr + n-1)开始,获取相应位
                temp=(uint)(temp/10);
        }

         //补:原先是对应于lcd 20*2的显示的,所以有20个字符的限制,实际上float达不到这个精度
        if( (d==0) || (i==20) )
        {               
                *(str_ptr + i) = STR_END;            //此时 i = n 或20
                return str_ptr;
        }
        else
        {
                *(str_ptr + i) = '.';                //此时 i = n ,且n < 20
        }
        
        //小数部分
        decimal_part = data - integral_part;
        for(i=n+1; (i<d+n+1)&&(i<20); i++)
        {
                decimal_part = decimal_part * 10;
                *(str_ptr + i) = (uchar)(decimal_part) +'0';                //从高位(str_ptr + n+1)开始,获取相应位
                decimal_part = decimal_part - (uchar)(decimal_part);
        }

        *(str_ptr + i) = STR_END;                        //此时 i = d+n+1 或20        
        
        return str_ptr;
}
这是个float转字符串函数,直接写入51会报错,请问这个函数如何应用与51?

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

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2013-11-16 09:58:33 | 显示全部楼层
没看出有什么不符合C51语法的地方啊,报什么错?
有个简单的函数,sprintf就可以代替这个函数了,不过体积有点大。

出0入0汤圆

发表于 2013-11-16 10:01:27 | 显示全部楼层
猜测一下,有几种可能
1,uchar 之类的自定义类型没有声明
2,STR_END没有定义
3,最可能的一个,函数里有个参数名叫data,而data是c51的关键字,把这个变量换个名字即可。

出10入120汤圆

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

本版积分规则

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

GMT+8, 2024-7-23 16:10

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

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