strtod, _strtod_l, wcstod, _wcstod_l

Преобразуют строки к значению удвоенной точности.

double strtod(
   const char *nptr,
   char **endptr 
);
double _strtod_l(
   const char *nptr,
   char **endptr,
   _locale_t locale
);
double wcstod(
   const wchar_t *nptr,
   wchar_t **endptr 
);
double wcstod_l(
   const wchar_t *nptr,
   wchar_t **endptr,
   _locale_t locale
);

Параметры

  • nptr
    Строка, заканчивающаяся нулевым символом, для преобразования.

  • endptr
    Указатель на символ, который останавливает сканирование.

  • locale
    Используемый языковой стандарт.

Возвращаемое значение

strtod возвращает значение с плавающей запятой, за исключением тех случаев, когда такое представление вызывает переполнение, в этом случае функция возвращает +/–HUGE_VAL.Символ HUGE_VAL соответствует знаку значения, которое нельзя представить.strtod возвращает 0, если преобразование не может быть выполнено, или происходит потеря точности.

wcstod возвращает значения аналогично strtod.Для обеих функций errno установлено в ERANGE при возникновении переполнения или потери точности и если вызывается обработчик недопустимого параметра, как описано в Проверка параметров.

См. раздел _doserrno, errno, _sys_errlist, and _sys_nerr для дополнительных сведений по этим и другим кодам возврата.

Заметки

Каждая функция преобразует входную строку nptr к double.Функция strtod преобразует nptr к значению двойной точности.strtod прекращает чтение строки nptr на первом знаке, который она не может распознать как часть числа.Это может быть конечный нуль-символом.wcstod — это двухбайтовая версия strtod; её аргумент nptr — строка двухбайтовых символов.В остальном эти функции ведут себя идентично.

Универсальное текстовое сопоставление функций

Подпрограмма TCHAR.H

_UNICODE & _MBCS не определены

_MBCS определен

_UNICODE определен

_tcstod

strtod

strtod

wcstod

_tcstod_l

_strtod_l

_strtod_l

_wcstod_l

Параметр категории LC_NUMERIC текущего языкового стандарта определяет распознавание основания системы счисления в nptr*;* дополнительные сведения см. в разделе setlocale.Функции без суффикса _l используют текущий языковой стандарт; _strtod_l идентична _strtod_l за исключением того, что они используют переданный языковой стандарт.Дополнительные сведения см. в разделе Языковой стандарт.

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

strtod предполагает, что nptr указывает на строку следующей формы:

[whitespace] [sign] [digits] [.digits] [ {d | D | e | E}[sign]digits]

whitespace может включать в себя пробелы и знаки табуляции, которые игнорируются; sign — или плюс (+) или минус (–); и digits — это одна или несколько десятичных цифр.Если перед символом системы счисления нет цифр, то хотя бы одна цифра должна быть после символа системы счисления.За десятичными цифрами может следовать степень, которая состоит из вводного буквы (d, D, e или E) и, при необходимости, целого числа со знаком.Если нет ни экспоненциальной части, ни символа системы счисления, то предполагается, что символ системы счисления следует за последней цифрой в строке.Первый символ, который не удовлетворяет этой форме, прекращает сканирование.

Требования

Функция

Требуемый заголовок

strtod, _strtod_l

<stdlib.h>

wcstod, _wcstod_l

<stdlib.h> или <wchar.h>

Дополнительные сведения о совместимости см. в разделе Совместимость во введении.

Пример

// crt_strtod.c
// This program uses strtod to convert a
// string to a double-precision value; strtol to
// convert a string to long integer values; and strtoul
// to convert a string to unsigned long-integer values.
//

#include <stdlib.h>
#include <stdio.h>

int main( void )
{
   char   *string, *stopstring;
   double x;
   long   l;
   int    base;
   unsigned long ul;

   string = "3.1415926This stopped it";
   x = strtod( string, &stopstring );
   printf( "string = %s\n", string );
   printf("   strtod = %f\n", x );
   printf("   Stopped scan at: %s\n\n", stopstring );

   string = "-10110134932This stopped it";
   l = strtol( string, &stopstring, 10 );
   printf( "string = %s\n", string );
   printf("   strtol = %ld\n", l );
   printf("   Stopped scan at: %s\n\n", stopstring );

   string = "10110134932";
   printf( "string = %s\n", string );
 
   // Convert string using base 2, 4, and 8:
   for( base = 2; base <= 8; base *= 2 )
   {
      // Convert the string:
      ul = strtoul( string, &stopstring, base );
      printf( "   strtol = %ld (base %d)\n", ul, base );
      printf( "   Stopped scan at: %s\n", stopstring );
   }
}
  

Эквивалент в .NET Framework

System::Convert::ToDouble

См. также

Ссылки

Преобразование данных

Поддержка чисел с плавающей запятой

Интерпретация последовательностей многобайтового символов

Языковой стандарт

Строка числового значения к функциям

strtol, wcstol, _strtol_l, _wcstol_l

strtoul, _strtoul_l, wcstoul, _wcstoul_l

atof, _atof_l, _wtof, _wtof_l

localeconv

_create_locale, _wcreate_locale

_free_locale