数据转换
Jan 19, 2020
char* float2str(float d,char *str)
{
char str1[40];
int j = 0,k,i;
i = (int)d;//浮点数的整数部分
while(i > 0)
{
str1[j++] = i % 10 + '0';
i = i / 10;
}
for(k = 0;k < j;k++)
{
str[k] = str1[j-1-k];//被提取的整数部分正序存放到另一个数组
}
str[j++] = '.';
d = d - (int)d;//小数部分提取
for(i = 0; i < 10; i++)
{
d = d*10;
str[j++] = (int)d + '0';
d = d - (int)d;
}
while(str[--j] == '0');
str[++j] = '\0';
return str;
}
/***
* slope: float类型的数值
* *str: 数组首地址
* dNum: 小数点的位数
*/
char* float2str(float slope, char *str, int dNum)
{
int temp, i, j;
// 1. 判断是否为负数
if(slope >= 0){
buffer[0] = '+';
}else{
buffer[0] = '-';
}
// 2. 提取整数部分
temp = (int) (slope);
for(i=0;temp!=0;i++)//计算整数部分的位数
temp /= 10;
temp = (int)slope;
for(j=i; j>0; j--)//将整数部分转换成字符串型
{
buffer[j] = temp%10 + '0';
temp /= 10;
}
buffer[i+1] = '.';
// 3. 提取小数部分
slope -=(int)slope;
for(j = 0; j < dNum; j++)//将小数部分转换成字符串型
{
slope *= 10;
buffer[i] = (int)slope+'0';
slope -= (int)slope;
}
buffer[dNum] = '\0';
}