Compartilhar via


strtod, _strtod_l, wcstod, _wcstod_l

Converte seqüências para 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

strtod Retorna o valor do número de ponto flutuante, exceto quando a representação poderia causar um estouro de capacidade, caso a função retorna + / –HUGE_VAL. Sinal de HUGE_VAL corresponde ao sinal do valor que não pode ser representado. strtod Retorna 0 se nenhuma conversão pode ser executada ou ocorre um estouro negativo.

wcstod Retorna valores analogously para strtod. Para ambas sistema autônomo funções, errno é definido sistema autônomo ERANGE Se ocorre estouro ou estouro negativo e o manipulador de parâmetro inválido é chamado, conforme descrito em Validação de parâmetro.

See _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. The strtod função converte nptr para um valor de precisão dupla. strtod Interrompe a leitura a seqüência de caracteres nptr no primeiro caractere que não reconhece sistema autônomo parte de um número. Isso pode ser o caractere nulo de terminação.wcstod é uma versão de caractere largo da 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érica

Rotina TCHAR.H

_UNICODE & _MBCS não definido

_MBCS definido

_UNICODE definido

_tcstod

strtod

strtod

wcstod

_tcstod_l

_strtod_l

_strtod_l

_wcstod_l

The LC_NUMERIC categoria de configuração da localidade corrente determina reconhecimento do caractere fracionário nptr*;* para obter mais informações, consulte setlocale.As funções sem o _l usar o sufixo a localidade corrente; _strtod_l é idêntico ao _strtod_l exceto pelo fato de que a localidade do passado em vez disso, eles usam. For more information, see Localidade.

If 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 executada (nenhum dígito válido foi encontrado ou uma base inválido foi especificada), o valor de nptr é armazenado na posição apontada por endptr.

strtod espera nptr para apontar para uma seqüência de caracteres de forma a seguir:

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

A whitespace may consist of space and tab characters, which are ignored; sign is either plus (+) or minus (–); and digits are one or more decimal digits.Se nenhum dígito aparecer antes do caractere fracionário, pelo menos um deve aparecer depois do caractere fracionário.Dígitos Decimal podem ser seguidos por um expoente, que consiste em uma carta introdutória (d, D, e, ou E) e, opcionalmente, inteiro com sinal. Se nem 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 interrompe 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 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 );
   }
}

string = 3.1415926This stopped it    strtod = 3.141593    Stopped scan at: This stopped it  string = -10110134932This stopped it    strtol = -2147483648    Stopped scan at: This stopped it  string = 10110134932    strtol = 45 (base 2)    Stopped scan at: 34932    strtol = 4423 (base 4)    Stopped scan at: 4932    strtol = 2134108 (base 8)    Stopped scan at: 932

Equivalente do NET Framework

sistema::converter::ToDouble

Consulte também

Referência

Conversão de Dados

Suporte de ponto flutuante

Interpretação de seqüências de caractere multibyte

Localidade

Seqüência de caracteres para 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