即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

实数转化为字符串

编程语言 lee70290_163_com 11℃ 0评论


/*


  

试编写一个函数ftoa将一个浮点数转化成为字符串

32位环境:gcc





*/











int ftoa( const double x,char buff[])


{


    if( sizeof(buff) < 4 )/*符号位+整数位+小数点+‘\0’至少四字节*/


    return -1;








    double temp = x;


    unsigned  long temp1;


    int i=1;


    int j=1;


    int len;


    char buf_tmp;








    if (temp < 0){


        buff[0]=’-‘;


        temp=-temp;


    }


    else {


        buff[0]=’+’;


    }








    temp1 = (unsigned long)(temp);      //取整数部分


    temp = temp-temp1;                       //保存小数部分








    do {


        buff[i++] = (temp1%10)[“0123456789”];


    }   while (temp1/=10);








    len=i-1;








    for(j = 1; j<(i+1)/2 ;j++,len--)


    {


       buf_tmp = buff[j];


       buff[j] = buff[len];


       buff[len] = buf_tmp;


    }








    buff[i++] = ‘.’;








    do {


        temp *= 10.0;


        buff[i++] = ( (unsigned long long)temp %10 )[“0123456789”];     // 再没有限定小数位数的情况下系统做近似处理可能产生很长的小数位


    }   while((unsigned long long )temp%10);                                         // 更多的小数位将变成近似值,此处可以设置为其他限定小数位数的条件。








    buff[i-1]=’\0′;



    return 0;


}

转载请注明:CodingBlog » 实数转化为字符串

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情