另外参见

atof(3),atoi(3),atol(3),nan(3),nanf(3),nanl(3),strfromd(3),strtol(3),strtoul(3)

返回值

这些函数返回转换后的值(如果有)。

如果endptr不为NULL,则指向转换中使用的最后一个字符之后的字符的指针将存储在endptr引用的位置。

如果不执行任何转换,则返回零,并且(除非endptr为null)nptr的值存储在endptr引用的位置。

如果正确的值将导致溢出,则返回正负HUGE_VAL(HUGE_VALF,HUGE_VALL)(根据值的符号),并且ERANGE存储在errno中。如果正确的值将导致下溢,则返回零,并将ERANGE存储在errno中。

语法

#包括

double strtod(const char * nptr,char ** endptr);
float strtof(const char * nptr,char ** endptr);
long double strtold(const char * nptr,char ** endptr);

glibc的功能测试宏要求(请参阅feature_test_macros(7)):

strtof(),strtold():

_ISOC99_SOURCE || _POSIX_C_SOURCE>= 200112L

属性

有关本节中使用的术语的说明,请参见attribute(7)。

InterfaceAttributeValue
strtod(),strtof(),strtold()Thread safetyMT-Safe locale
STRTOD - Linux手册页

Linux程序员手册 第3部分
更新日期: 2020-06-09

遵循规范

POSIX.1-2001,POSIX.1-2008,C99。

C89中也描述了strtod()。

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/

备注

由于成功和失败都可以合法地返回0,因此调用程序应在调用之前将errno设置为0,然后通过在调用之后检查errno是否具有非零值来确定是否发生了错误。

在glibc实现中,可选地在" NAN"之后的n字符序列被解释为要放置在尾数中的整数(带有可选的" 0"或" 0x"前缀以选择基数8或16)。返回值的组成部分。

错误说明

ERANGE
发生上溢或下溢。

说明

strtod(),strtof()和strtold()函数将nptr指向的字符串的初始部分分别转换为double,float和long double表示形式。

字符串(的初始部分)的预期形式是isspace(3)识别的可选前导空格,可选的加号(aq + aq)或减号(aq-aq),然后是(i)十进制数,或(ii)十六进制数,或(iii)无穷大,或(iv)NAN(非数字)。

十进制数字由一个非空的十进制数字序列组成,该序列可能包含一个基数字符(小数点,取决于语言环境,通常为aq.aq),还可以选择后面跟一个十进制指数。十进制指数由aqEaq或aqeaq组成,后跟一个可选的加号或减号,后跟一个非空的十进制数字序列,并表示乘以10的幂。

十六进制数字由" 0x"或" 0X"组成,后跟一个可能包含一个基数字符的十六进制数字的非空序列,并可选地后面跟一个二进制指数。二进制指数由aqPaq或aqpaq组成,后跟一个可选的加号或减号,再跟一个非空的十进制数字序列,并表示乘以2的幂。必须存在小数字符和二进制指数中的至少一个。

忽略大小写,无穷大是" INF"或" INFINITY"。

NAN是" NAN"(不区分大小写),可选的后跟字符串(n-char-sequence),其中n-char-sequence以实现相关的方式指定NAN的类型(请参见NOTES)。

名称

strtod,strtof,strtold-将ASCII字符串转换为浮点数

示例

请参见strtol(3)手册页上的示例;本手册页中描述的功能的用法类似。

日期:2019-08-20 18:01:26 来源:oir作者:oir