编程:将字符串转换成对应的浮点数。
代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
double atof(const char *s);
int main(int argc, char *argv[])
{
char s[30] = " 1234.567E-2 ";
printf("%f\n", atof(s));
return 0;
}
double atof(const char *s)
{
int i = 0;
while (isspace(s[i]))
++i;
int sign = 1;
if (s[i] == '-')
++i,sign = -1;
_Bool afterPoint = 0;
int k = 0;
double sum = 0.0;
while (s[i] != 'E' && s[i] != 'e' && s[i] != '\0') {
if (s[i] == '.') {
afterPoint = 1;
++i;
continue;
}
if (afterPoint) ++k;
sum = sum*10.0 + (double)(s[i]-'0');
++i;
}
int k1 = 0;
if (s[i] != '\0') {
++i;
k1 = atoi(&s[i]);
}
k = k1 - k;
return sum * pow(10.0, (double)k);
}