atof ()- 将字符串转换为 Float

格式

#include <stdlib.h>
double atof(const char *string);

语言级别

ANSI

线程安全

语言环境敏感

此函数的行为可能受当前语言环境的 LC_CTYPE 和 LC_NUMERIC 类别影响。 有关更多信息,请参阅 了解 CCSID 和语言环境

描述

atof() 函数将字符串转换为双精度浮点值。

输入 string 是可以解释为指定返回类型的数字值的字符序列。 该函数在无法识别为数字一部分的第一个字符处停止读取输入字符串。 此字符可以是结束字符串的空字符。

atof() 函数需要以下格式的 字符串 :

读取语法图跳过可视语法图空格 +  – 数字.数字.数字eE +  – 数字

空格由 isspace() 函数为 true 的相同字符 (例如空格和制表符) 组成。 atof() 函数将忽略前导空格字符。

对于 atof() 函数, 数字 是一个或多个十进制数字; 如果没有任何数字出现在小数点之前,那么必须在小数点之后至少出现一个数字。 十进制数字可以在由字母 e 或 E 引入的指数之前。 指数是一个十进制整数,可以有符号。

如果除数字以外的字符跟在 E 之后,或者如果以指数形式读取 e ,那么 atof() 函数不会失败。 例如, 100elf 将转换为浮点值 100.0。 准确性最高为 17 个有效字符数字。

返回值

atof() 函数返回通过将输入字符解释为数字而生成的 double 值。 如果函数无法将输入转换为该类型的值,那么返回值为 0 。 如果发生溢出,那么该函数会将 errno 设置为 ERANGE ,并返回值 -HUGE_VAL+ HUGE_VAL

示例

此示例显示如何将存储为字符串的数字转换为数字值。
#include <stdlib.h>
#include <stdio.h>
 
int main(void)
{
    double x;
    char *s;
 
    s = " -2309.12E-15";
    x = atof(s);     /* x = -2309.12E-15 */
 
    printf("x = %.4e\n",x);
}
 
/*******************  Output should be similar to:  ***************
 
x = -2.3091e-12
*/

相关信息