Описание тега strtod
strtod
это функция стандартной библиотеки C (находится в стандарте ANSI, раздел 2.13.2.4 - находится вstdlib.h
), который преобразует строку в число с плавающей запятой.
double strtod(const char *ptr, char **endptr)
- ptr: указатель на строку, которая будет преобразована
endptr: указатель на то, где произошло последнее успешное совпадение символов.
Например, позвонив
strtod
на веревочке"123abc"
дает endptr, который равенptr + 3
. Это часто используется, чтобы проверить, правильно ли прошло преобразование строки - если преобразование не произошло, то*endptr == ptr
.Обратите внимание, что этого не происходит, если endptr равен NULL.
Согласно ANSI,
Число может состоять из необязательного знака, строки цифр с необязательным десятичным знаком и необязательных e или E, за которыми следует необязательно знаковая экспонента.
(Это позволяет использовать как "нормальные" десятичные числа, так и научную запись).
Когда в конвертере происходит переполнение или недостаточное заполнение, errno
установлен на ERANGE и либо 0 (для недополнения), либо HUGE_VAL (для переполнения) - поэтому рекомендуется очистить errno
перед вызовом этой функции, иначе невозможно различить ошибку потери значимости и преобразование из "0".