double strtod(const char *str, char **tail);
float strtodf(const char *str, char **tail);
double _strtod_r(void *reent, const char *str, char **tail);
函数 strtod 解析字符字符串 str,生成一个可以转换为双精度值的子字符串。被转换的子字符串是 str 最长的初始子序列,从第一个非空白字符开始,具有以下格式:[+|-]digits[.][digits][(e|E)[+|-]digits]
如果 str 为空、完全由空白字符组成,或者第一个非空白字符不是 +、-、. 或数字,则该子字符串不包含任何字符。如果子字符串为空,则不进行转换,并且 str 的值存储在 *tail 中。否则,转换该子字符串,并将指向最终字符串(至少包含 str 的终止空字符)的指针存储在 *tail 中。如果不希望对 *tail 进行赋值,请传递一个空指针作为 tail。strtodf 与 strtod 完全相同,只是返回类型不同。
此实现返回最接近输入十进制字符串的机器数。平局情况通过使用 IEEE 舍入到偶数规则来打破。
备用函数 _strtod_r 是一个可重入版本。额外的参数 reent 是一个指向可重入结构的指针。### Returns
strtod 返回转换后的子字符串值(如果有)。如果无法执行转换,则返回 0。如果正确的值超出可表示值的范围,则返回正或负的 HUGE_VAL,并将 ERANGE 存储在 errno 中。如果正确的值会导致下溢,则返回 0 并将 ERANGE 存储在 errno 中。
**权威来源**: BUSMASTER DITA help source `strtod.dita`, compiled into `BUSMASTER.CHM` with the application.