sinadz的笔记 https://passport2.21ic.com/?589180 [收藏] [复制] [RSS]

日志

atof()函数是起什么功能atof()函数是起什么功能

已有 1734 次阅读2009-10-18 11:39 |系统分类:单片机

下面的stof()函数模拟标准库函数atof()的功能
/**//*处理方法:化小数为整数,化指数为小数处理*/
#include<stdio.h>
#include<ctype.h>
int main()
...{   double stof(char []);/**//*被调用函数的声明*/
    char test[]="  -123.456e-2";
    printf("%e",stof(test));
    getch();
    return 0;
  }
double stof(char s[])
...{   int i,sign,exp;
    double power,value;

    for(i=0;isspace(s);++i)/**//*跳过空白符号*/
        ;
    sign=(s=='-')?-1:1;/**//*化符号为数值*/
    if(s=='+'||s=='-')
        ++i;
    for(value=0.0;isdigit(s);++i)
        value=value*10.0+(s-'0');
    if(s=='.')
        ++i;
    for(power=1.0;isdigit(s);++i)
    ...{   value=value*10.0+(s-'0');
        power*=10.0;
     }
     value=sign*value/power;
/**//*以下部分针对含指数部分的浮点数*/
    if(s=='e'||s=='E')
    ...{   ++i;
        sign=(s=='-')?-1:1;
        if(s=='+'||s=='-')/**//*针对‘+’可输入可不输入的字符串*/
            ++i;
        for(exp=0;isdigit(s);++i)
            exp=exp*10.0+(s-'0');
        if(sign==-1)
            while(exp-->0)
                value/=10;/**//*不用value*=0.1原因是0.1在计算机中的二进制表示比实际值要稍小*/
        else
            while(exp-->0)
                value*=10;
    }
    return value;
}
表头文件
#include <stdlib.h>

定义函数
double atof(const char *nptr);

函数说明
atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到*非数字或字符串结束时('\0')才结束转换,并将结果返回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分,如123.456或123e-2。

返回值
返回转换后的浮点型数。

附加说明
atof()与使用strtod(nptr,(char**)NULL)结果相同。

范例
/* 将字符串a 与字符串b转换成数字后相加*/

#include<stdlib.h>
main()
{
    char *a=”-100.23”;
    char *b=”200e-2”;
    float c;
    c=atof(a)+atof(b);
    printf(“c=%.2f\n”,c);
}
执行
c=-98.23

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)