strtod, strtof, strtold -
преобразует
строку ASCII в
число с
плавающей
точкой
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);
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 <
[email protected]>, Azamat Hackimov
<
[email protected]>, Hotellook, Nikita
<
[email protected]>, Spiros Georgaras <
[email protected]>, Vladislav
<
[email protected]>, Yuri Kozlov <
[email protected]>
и Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]