跳转到内容

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 中。

  1. ISO/IEC 9899:1999 规范 (PDF). p. 308, § 7.20.1.3.
[编辑 | 编辑源代码]
华夏公益教科书