当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C语言 strtod用法及代码示例


C语言stdlib头文件(stdlib.h)中strtod函数的用法及代码示例。

用法:

double strtod (const char* str, char** endptr);
将字符串转换为双精度
解析C-stringstr将其内容解释为浮点数(根据当前语言环境),并将其值返回为double。如果endptr不是一个空指针,该函数还会设置endptr指向数字后的第一个字符。

该函数首先丢弃尽可能多的空格字符(如isspace),直到找到第一个非空白字符为止。然后,从该字符开始,采用与浮点字面量类似的语法(请参见下文),尽可能多地使用有效的字符,并将其解释为数值。指向最后一个有效字符之后的字符串其余部分的指针存储在由指向的对象中endptr

有效的浮点数strtod使用"C"语言环境由可选的符号字符(+或者-),然后是数字序列,可以选择包含小数点字符(.),然后可选的是 index 部分(e或者E字符,后跟一个可选的符号和一个数字序列)。
有效的浮点数strtod使用"C"语言环境由可选的符号字符(+或者-),然后输入以下内容之一:
-一个数字序列,可以选择包含小数点字符(.),然后可选的是 index 部分(e或者E字符,后跟一个可选的符号和一个数字序列)。
- 一种0x或者0X前缀,然后是十六进制数字序列(如isxdigit)(可选)包含一个将整数部分和小数部分分开的句点。可选地,其后为2的幂(ap或者P字符,后跟一个可选的符号和一个十六进制数字序列)。
--INF或者INFINITY(忽略大小写)。
--NAN或者NAN顺序(忽略大小写),其中顺序是一个字符序列,其中每个字符都是字母数字字符(如isalnum)或下划线字符(_)。

如果第一个非空格字符序列str不能形成如上所述的有效浮点数,或者不存在这样的序列,因为str为空或仅包含空格字符,不执行任何转换,并且该函数返回零值。

参数

str
C-string以浮点数表示开头。
endptr
引用一个已经分配的类型的对象char*,其值由函数设置为中的下一个字符str数值之后。
此参数也可以是空指针,在这种情况下不使用它。

返回值

成功后,函数将转换后的浮点数作为类型的值返回double
如果无法执行有效的转换,则该函数返回零(0.0)。
如果正确的值超出该类型可表示的值的范围,则为正或负HUGE_VAL返回,并且errno被设定为ERANGE

示例

/* strtod example */
#include <stdio.h>      /* printf, NULL */
#include <stdlib.h>     /* strtod */

int main ()
{
  char szOrbits[] = "365.24 29.53";
  char* pEnd;
  double d1, d2;
  d1 = strtod (szOrbits, &pEnd);
  d2 = strtod (pEnd, NULL);
  printf ("The moon completes %.2f orbits per Earth year.\n", d1/d2);
  return 0;
}


输出:

The moon completes 12.37 orbits per Earth year.



相关用法


注:本文由纯净天空筛选整理自C标准库大神的英文原创作品 C strtod function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。