小学生
最后登录1970-1-1
在线时间 小时
注册时间2017-9-24
|
楼主 |
发表于 2017-9-24 10:07:28
|
显示全部楼层
本帖最后由 ou543095783 于 2017-9-24 13:17 编辑
更新该代码,自动去除字符串前面的 0- /********************************************
- * float数转换字符串数组,自动去除字符串的0,不带四舍五入
- * 参数: pc - 字符数组地址
- * f - float源数据
- * intn - 保留整数位个数
- * decn - 保留小数位个数
- *******************************************/
- void floatToString(char *pc, float f, unsigned char intn, unsigned char decn)
- {
- char *pstr = 0;
- int num = 0;
- unsigned char i = 0;
- float dec = 0.0;
- unsigned char j = 0;
-
- if(0==pc || 0==intn) return;
-
- pstr = pc;
- num = (int)f;
- if(num<0) //负数
- {
- *pstr = '-';
- ++pstr;
- num = -num;
- }
- num %= (unsigned int)pow(10, intn); //去除高位多余的部分
- for(i=intn; i>0; --i) //分离整数部分
- {
- *pstr = (num/pow(10,i-1))+0x30;
- if(0x30==*pstr && 0==j) //自动去除字符串前面的0
- {
- continue;
- }
- j = 1;
- num = num%((unsigned int)pow(10, i-1));
- ++pstr;
- }
-
- if(0==j)
- {
- *pstr = '0';
- ++pstr;
- }
- if(0==decn) //小数位数为0
- {
- *pstr = '\0';
- return;
- }
- *pstr = '.'; //小数点
- ++pstr;
-
- dec = f-(int)f; //取得小数部分
- num = (int)(dec*pow(10, decn));
- if(num<0)
- {
- num = -num;
- }
-
- for(i=decn; i>0; --i)
- {
- *pstr = (num/pow(10,i-1))+0x30;
- num = num%((unsigned int)pow(10, i-1));
- ++pstr;
- }
- *pstr = '\0';
- }
复制代码 |
|