_atodbl
, , _atodbl_l
_atoldbl_l
_atoldbl
_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, const char * str );
int _atoflt_l( _CRT_FLOAT * value, const char * str, _locale_t locale );
Параметры
value
Двойное и длинное двойное значение, а также число с плавающей запятой формируются путем преобразования строки в значение с плавающей запятой. Эти значения упаковываются в структуре.
str
Строка для синтаксического анализа, которую необходимо преобразовать в значение с плавающей запятой.
locale
Используемый языковой стандарт.
Возвращаемое значение
Возвращает 0 в случае успеха. Возможные коды ошибок, _UNDERFLOW
_OVERFLOW
которые определены в файле <заголовка math.h>.
Замечания
Эти функции преобразуют строку в значение с плавающей запятой. Разница между этими функциями и atof
семейством функций заключается в том, что эти функции не создают код с плавающей запятой и не вызывают исключений оборудования. Вместо этого условия ошибок помечаются как коды ошибок.
Если строка не имеет допустимого интерпретации в качестве значения с плавающей запятой, value
имеет значение нулю, а возвращаемое значение равно нулю.
Версии этих функций с _l
суффиксом идентичны версиям, у которых нет суффикса, за исключением того, что они используют locale
параметр, переданный вместо текущего языкового стандарта потока.
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.
Требования
Подпрограммы | Обязательный заголовок |
---|---|
_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;
}
Double value: 3.141593
Return value: 0
Float value: 3.141593
Return value: 0
Float value: 0.000000
Return value: 0
Float value: inf
Return value: 3
См. также
Преобразование данных
Поддержка математических и плавающих точек
Локаль
atof
, , _atof_l
_wtof
_wtof_l