Namespaces
Variants

std:: atof

From cppreference.net
定义于头文件 <cstdlib>
double atof ( const char * str ) ;

str 所指向的字节字符串中的浮点值进行解析。

函数会丢弃所有空白字符(由 std::isspace 确定),直至找到首个非空白字符。随后尽可能提取能构成有效浮点数表示的字符,并将其转换为浮点数值。有效浮点数值可以是以下形式之一:

  • 十进制浮点表达式。它由以下部分组成:
  • (可选) 正负号
  • 非空的十进制数字序列,可选包含小数点字符(由当前 C locale 决定)(定义有效数字)
  • (可选) e E 后接可选减号或加号以及非空的十进制数字序列(定义以 10 为底的指数)
  • 十六进制浮点表达式。由以下部分组成:
  • (可选) 正负号
  • 0x 0X
  • 非空的十六进制数字序列,可选包含小数点字符(由当前C locale 决定)(定义有效数字)
  • (可选) p P 后接可选减号或加号以及非空的十进制数字序列(定义以 2 为底的指数)
  • 无穷大表达式。由以下部分组成:
  • (可选) 正负号
  • INF INFINITY (不区分大小写)
  • 非数值表达式。由以下部分组成:
  • (可选) 正负号
  • NAN NAN( 字符序列  ) NAN 部分不区分大小写)。 字符序列 只能包含数字、拉丁字母和下划线。结果为静默NaN浮点值。
(自 C++11 起)
  • 任何其他可能被当前安装的 C locale 接受的表达式。

目录

参数

str - 指向要解析的以空字符结尾的字节字符串的指针

返回值

double 值,对应 str 内容转换成功的结果。若转换值超出返回类型的范围,则返回值未定义。若无法执行任何转换,则返回 0.0

示例

#include <cstdlib>
#include <iostream>
int main()
{
    std::cout << std::atof("0.0000000123") << '\n'
              << std::atof("0.012") << '\n'
              << std::atof("15e16") << '\n'
              << std::atof("-0x1afp-2") << '\n'
              << std::atof("inF") << '\n'
              << std::atof("Nan") << '\n'
              << std::atof("invalid") << '\n';
}

输出:

1.23e-08
0.012
1.5e+17
-107.75
inf
nan
0

参见

(C++11) (C++11) (C++11)
将字符串转换为浮点数值
(函数)
将字节字符串转换为浮点数值
(函数)
(C++17)
将字符序列转换为整型或浮点数值
(函数)
将字节字符串转换为整型数值
(函数)
C 文档 关于 atof