在头文件中定义double atof(const char * str);
解释str指向的字节串中的浮点值。
函数丢弃任何空格字符(由std :: isspace()确定),直到找到第一个非空白字符。 然后,它需要尽可能多的字符来形成有效的浮点表示并将它们转换为浮点值。 有效的浮点值可以是以下值之一:
十进制浮点表达式。它由以下部分组成:(可选)加号或减号
非空十进制数字序列可选地包含小数点字符(由当前Clocale来决定)(定义有效数字)
(可选)e或者E跟随可选的负号或加号和非空序列的十进制数字(定义指数)
二进制浮点表达式。它由以下部分组成:(可选)加号或减号
0x 或 0X
非空的十六进制数字序列可选地包含小数点字符(由当前C确定locale)(定义有效数字)
(可选)p或者P跟随可选的负号或加号和非空序列的十进制数字(定义指数)
无限表达。它由以下部分组成:(可选)加号或减号
INF或者INFINITY无视事件
非数字表达式。它由以下部分组成:(可选)加号或减号
NAN或NAN(char_sequence)忽略该NAN部分的情况。char_sequence只能包含字母数字字符。结果是安静的NaN浮点值。
任何其他可能被当前安装的C locale 接受的表达式
参数
str-指向要解释的以空字符结尾的字节字符串
返回值
若成功,则返回double值对应str的内容。 如果转换后的值超出了返回类型的范围,则返回值未定义。 如果不能执行转换,则返回0.0。
例
#include #include
int main(void){ printf("%g\n", atof(" -0.0000000123junk")); printf("%g\n", atof("0.012")); printf("%g\n", atof("15e16")); printf("%g\n", atof("-0x1afp-2")); printf("%g\n", atof("inF")); printf("%g\n", atof("Nan")); printf("%g\n", atof("1.0e+309")); // UB: out of range of double printf("%g\n", atof("0.0")); printf("%g\n", atof("junk")); // no conversion can be performed}
可能的输出:
-1.23e-080.0121.5e+17-107.75inf
nan
inf00
参考
C11标准(ISO / IEC 9899:2011):7.22.1.1 atof函数(p:341)
C99标准(ISO / IEC 9899:1999):7.20.1.1 atof函数(p:307)
C89 / C90标准(ISO / IEC 9899:1990):4.10.1.1 atof函数
扩展内容
strtofstrtodstrtold(C99)(C99)将字节字符串转换为浮点值(函数)
| 用于atof的C ++文档 |