scott_ch edited 3 年,7 月前
double convert(char s[],int begin,int end)
{
int i=begin,isfind=0,j,isneg=0;
double sum=0,q=1;
if(s[i]==’-‘)
{
i++;
begin++;
isneg=1;
}
if(s[i]==’+’)
{
i++;
begin++;
}
for(;;i++)
{
if(s[i]==’.’)
{
isfind=1;
break;
}
if(i==end)
{
break;
}
}
if(isfind)
{
for(j=i-1;j>=begin;j–)
{
sum+=(s[j]-‘0’)q;
q=10;
}
q=0.1;
for(j=i+1;j<=end;j++)
{
sum+=(s[j]-‘0’)q;
q=0.1;
}
}
else
{
for(j=i;j>=begin;j–)
{
sum+=(s[j]-‘0’)q;
q=10;
}
}
if(isneg)
{
sum=-sum;
}
return sum;
}
double myatof(char s[])
{
int len=strlen(s),i=0;
for(;s[i]!=’e’ && s[i]!=’E’ && i<len;i++);
double sum=convert(s,0,i-1);
if(i==len)
{
return sum;
}
double exp=convert(s,i+1,len-1);
return sum*pow(10,exp);
}