my_dtoa函数

来源:互联网 发布:贷款记账软件 编辑:程序博客网 时间:2024/06/06 07:07
//成功返回0,失败返回-1  d,传进的double参数,dlen小数点位数,buf要转化的数据存的地址,clen buf的大小int  my_dtoa(double d, char dlen, char* buf, char clen){#define ARRLEN 10char 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}

原创粉丝点击