C语言实现浮点数或整数转成字符串
有的编程环境中不能直接使用sprintf库函数,这样就需要自己编写一个函数实现小数(浮点数)或整数转成字符串。
编程代码如下:
#include <stdio.h>void floatToString(float f,char str[])
{int data = 0;int n = 0;int i = 0;int len = 0;char strTemp[20] = "";for(i=0;i<10;i++) // 清空数组{str[i] = 0;}if(f>=1){data = (int)(f*1000);if(data%10 >= 5) // 四舍五入{data = (data/10)+1;}else{data = data/10;}while(data){strTemp[n++] = data%10+'0';data = data/10;}for(i=0;i<n;i++){str[i] = strTemp[n-i-1];}}else if(f<=-1){data = (int)(-1*(f*1000));if(data%10 >= 5) // 四舍五入{data = (data/10)+1;}else{data = data/10;}while(data){strTemp[n++] = data%10+'0';data = data/10;}str[0] = '-';for(i=1;i<=n;i++){str[i] = strTemp[n-i];}}else{if(f>=0){data = (int)((f+1)*1000);if(data%10 >= 5) // 四舍五入{data = (data/10)+1;}else{data = data/10;}printf("data = %d\n",data);while(data){strTemp[n++] = data%10+'0';data = data/10;}for(i=0;i<n;i++){str[i] = strTemp[n-i-1];}str[0] = '0';}else{data = (int)(-1*((f-1)*1000));if(data%10 >= 5) // 四舍五入{data = (data/10)+1;}else{data = data/10;}while(data){strTemp[n++] = data%10+'0';data = data/10;}str[0] = '-';for(i=1;i<=n;i++){str[i] = strTemp[n-i];}str[1] = '0';}}for(i=0;i<20;i++){if(0 == str[i]){break;}strTemp[i] = str[i];len++;}str[len-2] = '.';str[len-1] = strTemp[len-2];str[len] = strTemp[len-1];str[len+1] = 0;
}
void main()
{char str[10] = "";float f = 0;while(1){scanf("%f",&f);floatToString(f,str);puts(str);}
}
实现效果:
程序中还是有一点bug,各位测试使用,需要简单优化🙂!!!