Home C&C++函数库 c++ 语法 程序源码 Linux C库

atof

函数   <cstdlib>

double atof (const char* str);

将字符串转换为double

解析C字符串str,将其内容解释为浮点数,并以double形式返回其值。

函数首先丢弃所有必要的空格字符(如isspace),直到找到第一个非空格字符。
然后,从这个字符开始,按照类似于浮点字面值的语法(见下面)取尽可能多的有效字符,并将它们解释为数值。
最后一个有效字符之后的字符串的其余部分将被忽略,并且对该函数的行为没有影响。

C90(C++98) 使用“C”语言环境的atof的有效浮点数由可选符号字符(+或-)和数字序列组成, 可以包含小数点字符(.),可选后跟指数部分(e或E字符后跟可选符号和数字序列)
C99/C11(C++11) 使用“C”语言环境的atof的有效浮点数由可选的符号字符(+或-)组成,后面跟着一个:
- 数字序列,可选包含小数点字符(.),可选后跟指数部分(e或E字符后跟一个可选符号和数字序列)。
- 一个0x或0X前缀,然后是一个十六进制数字序列(如isxdigit),可选地包含一个句点,将整数和小数部分分开。 可选后跟2次幂(p或P字符后跟一个可选符号和一个十六进制数字序列)。
- INF或INFINITY(忽略大小写)。
- NAN或NANsequence(忽略大小写),其中sequence是字符序列,每个字符要么是字母数字字符(如isalnum),要么是下划线字符(_)。
* 如果str中的第一个非空白字符序列不构成刚才定义的有效浮点数,或者由于str为空或只包含空白字符而不存在这样的序列,则不执行转换,函数返回0.0。

☲  参数


str
以浮点数表示开头的c字符串。

☉  返回值



如果成功,该函数将转换后的浮点数作为双精度值返回。

如果不能执行有效的转换,则函数返回0(0.0)。

如果转换后的值超出了double的可表示值范围,则会导致未定义的行为。如果有可能,请参阅strtod以获得更健壮的跨平台替代方案。

☣  示例



/* atof example: sine calculator */
#include <stdio.h>      /* printf, fgets */
#include <stdlib.h>     /* atof */
#include <math.h>       /* sin */

int main ()
{
  double n,m;
  double pi=3.1415926535;
  char buffer[256];
  printf ("Enter degrees: ");
  fgets (buffer,256,stdin);
  n = atof (buffer);
  m = sin (n*pi/180);
  printf ("The sine of %f degrees is %f\n" , n, m);
  return 0;
}

输出:
Enter degrees: 45
The sine of 45.000000 degrees is 0.707101

↭  数据竞争



访问str所指向的数组。

❆  异常(c++)



无抛出保证:此函数从不抛出异常。
如果str没有指向有效的C-string,或者转换后的值超出了double可表示值的范围,则会导致未定义的行为。

🍄  另请参阅



strtod 将字符串转换为double (function )
atoi 将字符串转换为integer (function )
atol 将字符串转换为 long integer(function )

联系我们 免责声明 关于CandCplus 网站地图