头文件
#include <stdlib.h>
函数原型
double atof(const char *str);
函数说明
- atof 为 ascii to floating point numbers 的缩写,将字符串转换为双精度浮点数(double);
- atof() 会扫描输入字符串 str*,跳过前面的空格字符(如空格,tab等),直到遇到数字或正负符号才开始做转换,在遇到非数字 或 该字符串结束(‘\0’) 时会结束转换,并将结果返回。 字符串 str* 可包含
正负号
、小数点
或E(e)
来表示指数部分,如 123.456 或 123e-2;
返回值
返回转换后的浮点数,如果字符串 str* 不能被转换为 double,则返回 0.0(如果 atof() 先遇到字符,返回 0.0)。
示例
#include <stdio.h>
#include <stdlib.h>
#define NUM (255)
int main()
{
char a[NUM] = "-110.3456";
char b[NUM] = "-123.4 56.78";
char c[NUM] = "1234hsf";
char d[NUM] = "ada1234";
char e[NUM] = "1234aaf1456";
char f[NUM] = "1234aaf 1456";
char g[NUM] = "200e-2";
printf("a = %.4lf\n",atof(a));
printf("b = %.2lf\n",atof(b));
printf("c = %.2lf\n",atof(c));
printf("d = %.2lf\n",atof(d));
printf("e = %.2lf\n",atof(e));
printf("f = %.2lf\n",atof(f));
printf("g = %.2lf\n",atof(g));
return 0;
}
执行结果为:
a = -110.3456
b = -123.40
c = 1234.00
d = 0.00
e = 1234.00
f = 1234.00
g = 2.00