- strtod
-
strtod (сокр. от string to double, «строку в число двойной точности») — функция языка Си, конвертирующая символ строки в число с плавающей запятой двойной точности. Определение функции имеет вид:
double strtod ( const char * str, char ** endptr );
[1]
Содержание
Обзор
Функция
strtod
разбирает строку Сиstr
, представляя её содержимое в виде числа с плавающей точкой и возвращает её значениеdouble
. Еслиendptr
— не нуль-указатель, то функция устанавливает значение, на которое указываетendptr
, равным первому символу после числа.Вначале функция отбрасывает все пробелы, пока не встретится первый непробельный символ. Затем, начиная с этого символа, считывает все символы, соответствующие синтаксису как у литералов с плавающей точкой, и интерпретирует их в виде числовых значений. Указатель на оставшуюся часть строки после последнего корректного символа сохраняется в объекте, на который указывает
endptr
.Корректной последовательностью чисел с плавающей точкой для
strtod
считается последовательность, удовлетворяющая следующим условиям:- Знак положительного или отрицательного числа (необязательно)
- Последовательность цифр, как вариант, может содержать десятичную точку
- Дополнительная экспонентная часть, которая сама по себе состоит из символа 'e' или 'E', после которого следует дополнительный знак и последовательность цифр.
Если первая последовательность непробельных символов в
str
не содержит корректного числа с плавающей точкой как описано выше, или такой корректной последовательности не существует, так как, например, илиstr
пуст или содержит только символы пробела, то преобразование не выполняется.Параметры
str
- Си-строка, начинающаяся с представления числа с плавающей запятой.
endptr
- Ссылка на уже выделенный объект типа
char*
, чье значение присваивается функцией следующему символу вstr
после числового значения. Этот параметр также может быть нуль-указателем, в случае когда он не используется.
Возвращаемое значение
В случае успеха функция возвращает преобразованное число с плавающей запятой как число с двойной точностью (то есть типа
double
). Если корректное преобразование не может быть выполнено, то возвращается нулевое значение (0.0). Если корректное значение выходит за пределы представимых значений, то возвращается положительное или отрицательное значениеHUGE_VAL
(«huge value», большое число), а глобальной переменнойerrno
присваивается значениеERANGE
(выход за пределы). Если корректное значение будет слишком мало, то возвращается ноль, аerrno
присваивается значениеERANGE
.Функция
strtod
входит в состав заголовочного файлаstdlib.h
стандартной ISO/IEC библиотеки языка Си.См. также
Примечания
- ↑ strtod - convert a string to a double-precision number. Архивировано из первоисточника 14 апреля 2012.
Ссылки
- Справочник С/C++ для UNIX — Список функций — описание функции и примеры (рус.)
- STRTOD(3C) — описание функции (рус.)
Категории:- Язык программирования Си
- Stdlib.h
Wikimedia Foundation. 2010.