//成功返回0,失败返回-1 d,传进的double参数,dlen小数点位数,buf要转化的数据存的地址,clen buf的大小
int my_dtoa(double d, char dlen, char* buf, char clen)
{
#define ARRLEN 10
char m_arr[]={'0','1','2','3','4','5','6','7','8','9'};
char tmpArr[ARRLEN]={0};
char* ptmp=tmpArr;
int nZS=0;
double dXS=0;
double dtmp=d;
char i=0;
if (d<0)
{
dtmp=-d;
clen--;
}
nZS=(int)dtmp;
dXS=dtmp-nZS;
if (nZS==0)
{
*ptmp++=0;
++i;
}
else
{
while (nZS!=0)
{
if (++i>clen)
{
return -1;
}
*ptmp++=nZS%10;
nZS/=10;
}
}
if (clen<=i+dlen+1)
{
return -1;
}
ptmp=buf;
if (d<0)
{
*ptmp++='-';
}
while(i--)
{
*ptmp++=m_arr[tmpArr[i]];
}
if (dlen==0)
{
return 0;
}
*ptmp++='.';
for (i=0;i<dlen;i++)
{
dXS*=10;
*ptmp++=m_arr[(int)dXS];
dXS-=(int)dXS;
}
return 0;
#undef ARRLEN
}
my_dtoa函数
最新推荐文章于 2016-01-07 11:33:21 发布