Chinaunix首页 | 论坛 | 博客
  • 博客访问: 121924
  • 博文数量: 41
  • 博客积分: 1695
  • 博客等级: 上尉
  • 技术积分: 430
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-21 22:50
文章分类

全部博文(41)

文章存档

2010年(1)

2007年(23)

2006年(17)

我的朋友

分类: C/C++

2007-01-07 23:44:31

//Author:Guo R.H
//Date:07.1.6
//    USTC

#include

double atof(char a[])
{
    int i, sign, p, v, n=1;
    double var, pow;
    for(i=0; a[i]==' '; i++)
        ;
    sign = a[i]=='-'?-1:1;
    if(a[i]=='-' || a[i]=='+')
        i++;
    for(var=0.0; isdigit(a[i]); i++)
        var = var*10 + a[i]-'0';
    if(a[i] == '.')
        i++;
    for(pow=1.0; isdigit(a[i]); i++)
    {
        var = var*10 + a[i]-'0';
        pow *= 10;
    }
    if(a[i] == 'e')
        i++;
    p = a[i]=='-'?-1:1;
    if(a[i]=='-' || a[i]=='+')
        i++;
    for(v=0; isdigit(a[i]); i++)
        v = v*10 + a[i]-'0';
    while(v>0)
    {
        n *= 10;
        v--;
    }
    if(p == 1)
        return sign*var*n/pow;
    else
        return sign*var/(pow*n);
}

int main()
{
    printf("%lf\n", atof("  +0.1453e1"));
    return 0;
}
阅读(928) | 评论(0) | 转发(0) |
0

上一篇:粒子群PSO算法

下一篇:提取字符和数字

给主人留下些什么吧!~~