STRTOD(3)

НАЗВАНИЕ
strtod, strtof, strtold - конвертируют строки ASCII в число с плавающей запятой

СИНТАКСИС
#include <stdlib.h>

double strtod(const char *nptr, char **endptr);
float strtof(const char *nptr, char **endptr);
long double strtold(const char *nptr, char **endptr);

ОПИСАНИЕ
Функции strtod, strtof, и strtold преобразуют начальную часть строки, на которую указывает nptr , соответственно в числа типа double, float, и long double . Ожидаемый вид строки (ее начальная часть) - это несколько пробелов, распознаваемых функцией isspace(3), возможно знаки плюс (``+'') или минус (``-''), а затем либо (i) десятичное число, либо (ii) шестнадцатеричное число, либо (iii) бесконечность, либо (iv) нечисловое значение (NAN - not-a-number).

Десятичное число состоит из непустной последовательности цифр от 0 до 9, возможно содержащей символ дробного разделителя (десятичная точка, зависит от настройки локали; обычно это символ точки - ``.''), возможно с последующей десятичной экспонентой. Десятичная экспонента состоит из символа ``E'' или ``e'', далее возможен знак плюс или минус, а затем непустая последовательность десятичных цифр, означающая умножение всей начальной части на 10 в указанной степени.

Шестнадцатеричное число состоит из символов ``0x'' или ``0X'' с последующей непустой последовательностью из шестнадцатеричных цифр, возможно содержащей символ дробного разделителя, далее может следовать двоичная экспонента. Двоичная экспонента состоит из символа ``P'' или ``p'', далее, возможно, знака плюс или минус, и непустой последовательности десятичных цифр, обозначающих умножение всего начального числа на 2 в указанной степени. По меньшей мере должен быть указан либо символ дробного разделителя либо бинарная экспонента.

Бесконечноть - это либо значение ``INF'' либо ``INFINITY'', независимо от режима символов.

Нечисловое значение (NAN) - это значение ``NAN'' (не зависимо от режима символов), возможно сопровождаемое `(', последовательностью символов, и затем ')'. Последовательность символов определяет тип нечислового значения в зависимости от текущей представления NAN в системе.

ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
Функции возвращают преобразованное значение, если таковое существует. Если endptr не равно NULL, то указатель на символ, следующий за последним обработанным символом, сохраняется в endptr. Если не производится никаких преобразований, то возвращается ноль, а значение nptr сохраняется в той позиции, на которую ссылается endptr. Если правильное значение вызовет "переполнение" (overflow), то возвращается значение плюс или минус HUGE_VAL (HUGE_VALF, HUGE_VALL) (в зависимости от знака величины), а ERANGE записывается в переменную errno. Если правильное значение будет настолько маленьким, что им можно будет пренебречь, то возвращается ноль, а переменной errno присваивается значение ERANGE.

НАЙДЕННЫЕ ОШИБКИ

ERANGE:
    величина оказалась слишком большой или очень маленькой.

СООТВЕТСТВИЕ СТАНДАРТАМ
ANSI C описывает функцию strtod, а стандарт C99 описывает остальные две функции.

СМ. ТАКЖЕ
atof(3), atoi(3), atol(3), strtol(3), strtoul(3).