ftoa浮法成字符串

时间:2023-03-09 03:21:26
ftoa浮法成字符串

#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;

}