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

2020-01-26 12:43发布

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?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
qllaoda1
1楼-- · 2020-01-26 15:36
没看出有什么不符合C51语法的地方啊,报什么错?
有个简单的函数,sprintf就可以代替这个函数了,不过体积有点大。
qllaoda1
2楼-- · 2020-01-26 21:16
 精彩回答 2  元偷偷看……
makesoft
3楼-- · 2020-01-26 23:13
这么麻烦,为什么不用sprintf转换呢?

一周热门 更多>