_atodbl, _atodbl_l, _atoldbl, _atoldbl_l, _atoflt _atoflt_l
将字符串转换为二进制 (_atodbl),长的二进制文件 (_atoldbl),或浮动 (_atoflt)。
int _atodbl(
_CRT_DOUBLE * value,
char * str
);
int _atodbl_l (
_CRT_DOUBLE * value,
char * str,
locale_t locale
);
int _atoldbl(
_LDOUBLE * value,
char * str
);
int _atoldbl_l (
_LDOUBLE * value,
char * str,
locale_t locale
);
int _atoflt(
_CRT_FLOAT * value,
char * str
);
int _atoflt_l(
_CRT_FLOAT * value,
char * str,
locale_t locale
);
参数
value
double、长的二进制文件或浮点值通过将字符串生成为浮点值。 这些值在 framework 包装。str
要分析的字符串转换为浮点值。locale
使用的区域设置。
返回值
返回 0; 如果成功;可能的错误代码是 _UNDERFLOW 或 _OVERFLOW,定义在头文件 Math.h。
备注
这些函数将字符串转换为浮点值。 在这些特性和功能之间 atof 系列的区别在于这些函数不生成浮点代码并不会导致硬件异常。 相反,错误状态报告为错误代码。
如果字符串没有有效的解释为浮点值, value 设置为零,并返回值为零。
这些功能的版本与 _l 后缀的相同,只不过它们使用区域设置参数而不是当前线程区域设置。
要求
实例 |
必需的头 |
---|---|
_atodbl, _atoldbl, _atoflt _atodbl_l, _atoldbl_l, _atoflt_l |
stdlib.h |
示例
// crt_atodbl.c
// Uses _atodbl to convert a string to a double precision
// floating point value.
#include <stdlib.h>
#include <stdio.h>
int main()
{
char str1[256] = "3.141592654";
char abc[256] = "abc";
char oflow[256] = "1.0E+5000";
_CRT_DOUBLE dblval;
_CRT_FLOAT fltval;
int retval;
retval = _atodbl(&dblval, str1);
printf("Double value: %lf\n", dblval.x);
printf("Return value: %d\n\n", retval);
retval = _atoflt(&fltval, str1);
printf("Float value: %f\n", fltval.f);
printf("Return value: %d\n\n", retval);
// A non-floating point value: returns 0.
retval = _atoflt(&fltval, abc);
printf("Float value: %f\n", fltval.f);
printf("Return value: %d\n\n", retval);
// Overflow.
retval = _atoflt(&fltval, oflow);
printf("Float value: %f\n", fltval.f);
printf("Return value: %d\n\n", retval);
return 0;
}