STRTOD - Linux手册页
Linux程序员手册 第3部分
更新日期: 2020-06-09
名称
strtod,strtof,strtold-将ASCII字符串转换为浮点数
语法
#包括
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
说明
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)。
返回值
这些函数返回转换后的值(如果有)。
如果endptr不为NULL,则指向转换中使用的最后一个字符之后的字符的指针将存储在endptr引用的位置。
如果不执行任何转换,则返回零,并且(除非endptr为null)nptr的值存储在endptr引用的位置。
如果正确的值将导致溢出,则返回正负HUGE_VAL(HUGE_VALF,HUGE_VALL)(根据值的符号),并且ERANGE存储在errno中。如果正确的值将导致下溢,则返回零,并将ERANGE存储在errno中。
错误说明
- ERANGE
- 发生上溢或下溢。
属性
有关本节中使用的术语的说明,请参见attribute(7)。
Interface | Attribute | Value |
strtod(),strtof(),strtold() | Thread safety | MT-Safe locale |
遵循规范
POSIX.1-2001,POSIX.1-2008,C99。
C89中也描述了strtod()。
备注
由于成功和失败都可以合法地返回0,因此调用程序应在调用之前将errno设置为0,然后通过在调用之后检查errno是否具有非零值来确定是否发生了错误。
在glibc实现中,可选地在" NAN"之后的n字符序列被解释为要放置在尾数中的整数(带有可选的" 0"或" 0x"前缀以选择基数8或16)。返回值的组成部分。
示例
请参见strtol(3)手册页上的示例;本手册页中描述的功能的用法类似。
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。