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 библиотеки языка Си.

См. также

Примечания

  1. strtod - convert a string to a double-precision number. Архивировано из оригинала 14 апреля 2012 года.

Ссылки

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.