(1)在不调用库函数的情况下,把浮点数转化为字符串的难点就在,把小数转化为字符串。因为浮点数的精度问题,当我们对浮点数进行乘10操作的时候,浮点数尾数数值可能就会发生变化,如float a=12.1047; a*=10;输出a=121.046997。所以在把浮点数的小数转化为字符串时要对精度进行限制。
1 #include<stdio.h> 2 #include <math.h> 3 #include <stdlib.h> 4 5 const double eps = 1e-11; 6 7 void float_to_str(char *str,double num) 8 { 9 int high;//float_整数部分 10 double low;//float_小数部分 11 char *start=str; 12 int n=0; 13 char ch[20]; 14 int i; 15 high=(int)num; 16 low=num-high; 17 18 while(high>0){ 19 ch[n++]='0'+high%10; 20 high=high/10; 21 } 22 23 for(i=n-1;i>=0;i--){ 24 *str++=ch[i]; 25 } 26 27 num -= (int)num; 28 double tp = 0.1; 29 *str++='.'; 30 31 while(num > eps){//精度限制 32 num -= tp * (int)(low * 10); 33 tp /= 10; 34 *str++='0'+(int)(low*10); 35 low=low*10.0-(int)(low*10); 36 } 37 *str='