strtod(3)

ИМЯ
strtod, strtof, strtold - преобразует строку ASCII в число с плавающей точкой

LIBRARY
Standard C library (libc, -lc)

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

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

    Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

strtof(), strtold():
    _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L

ОПИСАНИЕ
Функции strtod(), strtof() и strtold() преобразуют начальную часть строки, на которую указывает nptr, в числа типа double, float, и long double, соответственно.

The expected form of the (initial portion of the) string is optional leading white space as recognized by isspace(3), an optional plus ('+') or minus sign ('-') and then either (i) a decimal number, or (ii) a hexadecimal number, or (iii) an infinity, or (iv) a NAN (not-a-number).

A decimal number consists of a nonempty sequence of decimal digits possibly containing a radix character (decimal point, locale-dependent, usually '.'), optionally followed by a decimal exponent. A decimal exponent consists of an 'E' or 'e', followed by an optional plus or minus sign, followed by a nonempty sequence of decimal digits, and indicates multiplication by a power of 10.

A hexadecimal number consists of a "0x" or "0X" followed by a nonempty sequence of hexadecimal digits possibly containing a radix character, optionally followed by a binary exponent. A binary exponent consists of a 'P' or 'p', followed by an optional plus or minus sign, followed by a nonempty sequence of decimal digits, and indicates multiplication by a power of 2. At least one of radix character and binary exponent must be present.

Бесконечность — это либо значение «INF» либо «INFINITY», регистр символов не учитывается.

Нечисловое значение (NAN) — это значение «NAN» (регистр символов не учитывается) возможно сопровождаемое (последовательность n символов), где последовательность n символов, определяет тип нечислового значения в зависимости от текущего представления NAN в системе (смотрите ЗАМЕЧАНИЯ).

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функции возвращают преобразованное значение, если таковое существует.

Если endptr не равно NULL, то указатель на символ, следующий за последним обработанным символом, сохраняется в место, указываемое endptr.

Если никаких преобразований не производилось, то возвращается ноль, а значение nptr сохраняется в той позиции, на которую ссылается endptr (если endptr не равно null).

If the correct value would cause overflow, plus or minus HUGE_VAL, HUGE_VALF, or HUGE_VALL is returned (according to the return type and sign of the value), and ERANGE is stored in errno.

If the correct value would cause underflow, a value with magnitude no larger than DBL_MIN, FLT_MIN, or LDBL_MIN is returned and ERANGE is stored in errno.

ОШИБКИ

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

АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).
Интерфейс | Атрибут | Значение
strtod(), strtof(), strtold() | Безвредность в нитях | MT-Safe locale

СТАНДАРТЫ
POSIX.1-2001, POSIX.1-2008, C99.

ЗАМЕЧАНИЯ
Так как возвращаемым значением может быть 0 при успешном выполнении и ошибке, вызывающая программа должна присвоить errno значение 0 до вызова, а после вызова определить возникновение ошибки по ненулевому значению errno.

В реализации glibc последовательность n символов, которая может появляться после «NAN», рассматривается как целое число (с необязательным префиксом «0» или «0x» для указания системы счисления 8 или 16), которое будет помещено в мантиссу возвращаемого значения.

ПРИМЕРЫ
Пример можно найти в справочной странице strtol(3); в ней показано использование похожих функций.

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

ПЕРЕВОД
Русский перевод этой страницы руководства был сделан Alexander Golubev <fatzer2@gmail.com>, Azamat Hackimov <azamat.hackimov@gmail.com>, Hotellook, Nikita <zxcvbnm3230@mail.ru>, Spiros Georgaras <sng@hellug.gr>, Vladislav <ivladislavefimov@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 (https://www.gnu.org/licenses/gpl-3.0.html) или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.