您的位置:首页 > 其它

ftoa浮法成字符串

2015-06-21 17:27 260 查看
#include <stdio.h>

bool ftos(float num,char *s,int n)

{

int temp;

float t=num;

int pn=0;

bool flag_s=true;

bool flag_z=false;

for(int i=n;i>0;i--)

t=t*10;

printf("%f\n",t);

temp=t;

printf("%d\n",temp);

if(temp<0)

{

temp=-temp;

t=-num;

flag_s=false;

}

if(temp==0)

{

if(n>0)

{

for( pn=0;pn<n;pn++)

{

*(s+pn)='0';

}

*(s+pn)='\.';

++pn;

}

*(s+pn)='0';

++pn;

if(!flag_s){

*(s+pn)='\-';

++pn;

}

*(s+pn)='\0';

}

else

{

while(temp>0)

{

if(pn==n && n>0)

{

*(s+pn)='\.';

++pn;

}

else{

*(s+pn)=(temp%10)+'0';

temp=temp/10;

++pn;

}

}

while(pn<n)

{

*(s+pn)='0';

++pn;

}

if(pn==n)

{

*(s+pn)='\.';

++pn;

if(flag_s){

*(s+pn)='0';

++pn;

}

}

if(!flag_s){

if(t<1.0){

*(s+pn)='\.';

++pn;

*(s+pn)='0';

++pn;

}

*(s+pn)='\-';

++pn;

}

*(s+pn)='\0';

}

int i(0),j(pn-1);

while(i<j)

{

int temp=*(s+i);

*(s+i)=*(s+j);

*(s+j)=temp;

++i;

j--;

}

return true;

}

int main()

{

char s[20];

float num=123.456;

int n=3;

scanf("%f",&num);

scanf("%d",&n);

printf("float num is %f\n",num);

if(ftos(num,s,n))

{

printf("after convert is %s\n",s);

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: