Compartilhar via


strtod, _strtod_l, wcstod, _wcstod_l

Converta seqüências de caracteres em 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
    Seqüência terminada por caractere nulo para converter.

  • endptr
    Ponteiro para o caractere que interrompe a varredura.

  • locale
    A localidade para usar.

Valor de retorno

strtodRetorna o valor do número de ponto flutuante, exceto quando a representação poderia causar um estouro, em que caso a função retorna + / –HUGE_VAL.O sinal de HUGE_VAL coincide com o sinal do valor que não pode ser representado.strtodRetorna 0 se nenhuma conversão pode ser executada ou ocorrerá um estouro negativo.

wcstodRetorna valores analogamente para strtod.Para ambas as funções, errno for definido como ERANGE se ocorre estouro positivo ou negativo e o manipulador de parâmetro inválido é invocado, conforme descrito em Validação de parâmetro.

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

Comentários

Cada função converte a seqüência de caracteres de entrada nptr para um double.O strtod função converte nptr a um valor de precisão dupla.strtodInterrompe a leitura a seqüência de caracteres nptr no primeiro caractere que não reconhece como parte de um número.Isso pode ser o caractere nulo de terminação.wcstodé uma versão de caractere largo de strtod; sua nptr argumento é uma seqüência de caracteres largos.Essas funções se comportam exatamente caso contrário.

Mapeamentos de rotina de texto genérico

TCHAR.Rotina H

_ Unicode & _ MBCS do arquivo não definido

_ MBCS do arquivo definido

_ Unicode definido

_tcstod

strtod

strtod

wcstod

_tcstod_l

_strtod_l

_strtod_l

_wcstod_l

O LC_NUMERIC definição de categoria da localidade atual determina o reconhecimento do caractere fracionário nptr*;* para obter mais informações, consulte setlocale.As funções, sem a _l sufixo usam a localidade atual; _strtod_lé idêntico ao _strtod_l , exceto que eles usam a localidade do passado em vez disso.Para obter mais informações, consulte Localidade.

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

strtodespera nptr para apontar para uma seqüência de caracteres do seguinte formato:

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

A whitespace pode consistir em caracteres de espaço e tabulação, que são ignorados; signé plus (+) ou sinal de subtração (–); e digits são um ou mais dígitos decimais.Se nenhum dígito aparecer antes do caractere fracionário, pelo menos um deve aparecer após o caractere fracionário.Os dígitos decimais podem ser seguidos por um expoente, que consiste em uma carta de apresentação (d, D, e, ou E) e um inteiro assinado opcionalmente.Se uma parte expoente nem um caractere fracionário aparecer, será considerado um caractere fracionário siga o último dígito na seqüência de caracteres.O primeiro caractere que não cabe neste formulário pára a varredura.

Requisitos

Rotina

Cabeçalho necessário

strtod, _strtod_l

<stdlib.h>

wcstod, _wcstod_l

<stdlib.h> ou <wchar.h>

Para obter 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 seqüências de caracteres Multibyte

Localidade

Seqüência de funções de valor 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