#include<stdio.h>
#define ARRAY_MAX 20
/*
*dnum input float number
*str input char array
*len input float length
*
*/
char *ftoa(float dnum,char *str,int len)
{
int arrayNum[ARRAY_MAX];
int pointPos=1;//the position of point
int index=0;
int i=0;
if(dnum > 0)
{
while(dnum >= 10.0)
{
pointPos++;
dnum/=10;
}
for(i=0;i<len;i++)
{
if(i == pointPos)
{
arrayNum[i]=-2;
continue;
}
int num=dnum;
arrayNum[i]=num;
dnum-=num;
dnum*=10;
}
for(i=0;i<len;i++)
{
str[i]=arrayNum[i]+'0';
}
str[len]='\0';
}
else
{
_dnum=-dnum;
while(_dnum >= 10.0)
{
pointPos++;
_dnum/=10;
}
for(i=0;i<len;i++)
{
if(i == pointPos)
{
arrayNum[i]=-2;
continue;
}
intnum=_dnum;
arrayNum[i]=num;
dnum-=num;
dnum*=10;
}
for(i=0;i<len;i++)
{
str[i]=arrayNum[i]+'0';
}
str[len]='\0';
}
return str;
}
int main()
{
float flt=34.4324;
char str[ARRAY_MAX];
char *ret=ftoa(flt,str,10);
printf("float=%f,char=%s\n",flt,ret);
return 0;
}