Compartilhar via


strtod, _strtod_l, wcstod, _wcstod_l

Cadeias de caracteres de conversão como um valor de precisão dupla.

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
);

Parâmetros

  • nptr
    Cadeia de caracteres nula a ser convertida.

  • endptr
    Ponteiro para o caractere que para o exame.

  • locale
    A localidade a ser usada.

Valor de retorno

strtod retorna o valor do número de ponto flutuante, exceto quando a representação resulta em um estouro, nesse caso a função retorna +/-HUGE_VAL. O sinal de HUGE_VAL corresponde ao sinal de valor que não pode ser representado. strtod retorna 0 se nenhuma conversão puder ser executada ou ocorre um estouro negativo.

Valores de retornos do wcstod análogos a strtod. Para ambas as funções, errno é definido como ERANGE se o estouro ou o estouro negativo ocorrerem e o manipulador de parâmetro inválido for invocado, como descrito em Validação do parâmetro.

Consulte _doserrno, errno, _sys_errlist, e _sys_nerr para obter mais informações sobre esse e outros códigos de retorno.

Comentários

Cada função converte a cadeia de caracteres nptr de entrada em um double. A função de strtod converte nptr a um valor de precisão dupla. strtod deixa de ler a cadeia de caracteres nptr no primeiro caractere que ela não reconhece ser parte de um número. Isso pode ser o caractere de terminação zero. wcstod é uma versão de caractere amplo de strtod; seu argumento nptr é uma cadeira de caractere longo. Essas funções se comportam exatamente o contrário.

Mapeamentos da rotina de texto genérico

Rotina TCHAR.H

_UNICODE & _MBCS não definido

_MBCS definido

_UNICODE definido

_tcstod

strtod

strtod

wcstod

_tcstod_l

_strtod_l

_strtod_l

_wcstod_l

A configuração da categoria de LC_NUMERIC de localidade atual determina o reconhecimento de caracteres raiz em nptr*;* para obter mais informações, consulte setlocale. As funções sem o sufixo de _l usam a localidade atual; _strtod_l é idêntico a _strtod_l exceto que usam a localidade passada por vez. Para obter mais informações, consulte Localidade.

Se endptr não for NULL, um ponteiro para o caractere que interrompeu a verificação é armazenado no local apontado por endptr. Se nenhuma conversão puder ser executada (nenhum dígito válido foi encontrado ou uma base inválida foi especificada), o valor de nptr será armazenado no local apontado por endptr.

strtod espera nptr apontar para uma cadeia de caracteres de seguinte forma:

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

Um whitespace pode consistir nos caracteres de espaço e de tabulação, que são ignorados; sign é mais (+) ou menos (–); and digits é um ou mais dígitos decimais. Se nenhum dígito aparece antes do caractere raiz, pelo menos um deve aparecer após o caractere raiz. Os dígitos decimais podem ser seguidos por um expoente, que consiste em uma letra introdutória (d, D, e ou E) e opcionalmente em um inteiro com sinal. Se uma parte do expoente ou um caractere raiz não aparecem, um caractere de raiz seguirá o último dígito da cadeia de caracteres. O primeiro caractere que não se ajusta a este formulário interrompe o exame.

Requisitos

Rotina

Cabeçalho necessário

strtod, _strtod_l

<stdlib.h>

wcstod, _wcstod_l

<stdlib.h> ou <wchar.h>

Para informações adicionais de compatibilidade, consulte Compatibilidade na Introdução.

Exemplo

// 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 );
   }
}
  

Equivalência do .NET Framework

System::Convert::ToDouble

Consulte também

Referência

Conversão de dados

Suporte de ponto flutuante

Interpretação de sequências de caracteres multibyte

Localidade

Funções de valor da cadeia de caracteres para numérico

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