Home C&C++函数库 c++ 语法 程序源码 Linux C库

strtold

函数   <cstdlib>

long double strtold (const char* str, char** endptr);

将字符串转换为 long double

解析C字符串str,将其内容解释为浮点数(根据当前语言环境),并以long double返回其值。
如果endptr不是空指针,该函数还将endptr的值设置为指向数字后面的第一个字符。

这个函数类似于strtod来解释字符串,但会产生long double类型的数字 (有关解释过程的详细信息,请参阅strtod)。

☲  参数


str
以浮点数表示开头的C字符串。

endptr
对已经分配的char*类型对象的引用,该对象的值由函数设置为数值后的str中的下一个字符。
这个参数也可以是一个空指针,在这种情况下它不会被使用。

☉  返回值



如果成功,该函数将转换后的整数值作为long int 型值返回。

如果不能执行有效的转换,则函数返回0 (0.0L)。

如果正确的值超出了该类型的可表示值的范围,则返回正的或负的HUGE_VALL, 并将errno设置为ERANGE。

如果正确的值会导致下溢,则函数返回一个值,其大小不大于最小的标准化正数 (在这种情况下,一些库实现也可能将errno设置为ERANGE)。

☣  示例



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

int main ()
{
  char szOrbits[] = "90613.305 365.24";
  char * pEnd;
  long double f1, f2;
  f1 = strtold (szOrbits, &pEnd);
  f2 = strtold (pEnd, NULL);
  printf ("Pluto takes %.2Lf years to complete an orbit.\n", f1/f2);
  return 0;
}

输出:
Pluto takes 248.09 years to complete an orbit.

↭  数据竞争



str指向的数组被访问,endptr指向的指针被修改(如果不是null)。

❆  异常(c++)



无抛出保证:此函数从不抛出异常。
如果str没有指向有效的C-string,或者endptr没有指向有效的指针对象,将导致未定义的行为。

🍄  另请参阅



strtol 将string转换为long integer(function)
strtold 将string转换为 long double (function)
atof 将字符串转换为 double (function )

联系我们 免责声明 关于CandCplus 网站地图