C 编程/stdlib.h/strtod
外观
strtod (string to double) 将一个字符字符串转换为双精度浮点数[1]。它定义如下:
double strtod ( const char * str, char ** endptr );
strtod 函数解析 C 字符串 str,将其内容解释为浮点数,并将它的值作为双精度浮点数返回。如果 endptr 不是空指针,该函数还会将 endptr 指向的值设置为指向数字后的第一个字符。
该函数首先丢弃尽可能多的空格字符,直到找到第一个非空格字符。然后,从该字符开始,尽可能多地获取符合浮点字面量语法格式的字符,并将它们解释为数值。指向数字后剩余字符串的指针存储在 endptr 指向的对象中。
strtod 的有效浮点数由以下部分组成:
- 可选的正负号
- 一个数字序列,可以选择包含小数点字符
- 可选的指数部分,它本身由一个 'e' 或 'E' 字符后跟可选的符号和一个数字序列组成。
如果 str 中的第一个非空格字符序列不构成如上定义的有效浮点数,或者由于 str 为空或仅包含空格字符而没有这样的序列,则不执行转换。
str
- 以浮点数表示开头的 C 字符串。
endptr
- 对一个已分配的 char* 类型对象的引用,该函数将该值设置为指向 str 中数字值后的下一个字符。此参数也可以是空指针,在这种情况下,它不会被使用。
成功时,该函数将转换后的浮点数作为双精度浮点数值返回。如果无法执行有效的转换,则返回零值 (0.0)。如果正确的值超出可表示值的范围,则返回正或负 HUGE_VAL,并且全局变量 errno 设置为 ERANGE。如果正确的值会导致下溢,则返回零,并且 errno 设置为 ERANGE。
strtod 函数包含在 stdlib.h
中。
- ↑ ISO/IEC 9899:1999 规范 (PDF). p. 308, § 7.20.1.3.