strtod, _strtod_l, wcstod, _wcstod_l

Converte le stringhe in un valore a precisione doppia.

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

Parametri

  • nptr
    Stringa con terminazione null da convertire.

  • endptr
    Puntatore al carattere che interrompe la scansione.

  • locale
    Le impostazioni locali da utilizzare.

Valore restituito

strtod restituisce il valore di numeri a virgola mobile, tranne quando la rappresentazione può provocare un overflow, in questo caso la funzione restituisce +/-HUGE_VAL.Il segno HUGE_VAL corrisponde al segno del valore che non può essere rappresentato.strtod restituisce 0 se nessuna conversione può essere eseguita o se un underflow si verifica.

wcstod restituisce i valori analogamente a strtod.Per entrambe le funzioni, errno è impostato su ERANGE se un overflow o un underflow si verificano e il gestore non valido di parametro viene richiamato,la procedura viene descritta in Convalida dei parametri.

Vedere _doserrno, errno, _sys_errlist, e _sys_nerr per ulteriori informazioni su questo, e altri, codici restituiti.

Note

Ogni funzione converte la stringa di input nptr a double.La funzione strtod converte nptr a un valore a precisione doppia.La funzione strtod interrompe la lettura della stringa nptr al primo carattere che non riconosce come parte di un numero.Questo può rappresentare il carattere di terminazione null.wcstod è una versione a caratteri estesi di strtod; l'argomento nptr è una stringa di caratteri estesi.Altrimenti queste funzioni si comportano in modo identico.

Mapping di routine a Testo generico

TCHAR.H routine

_UNICODE & _MBCS non definiti

_MBCS definito

_UNICODE definito

_tcstod

strtod

strtod

wcstod

_tcstod_l

_strtod_l

_strtod_l

_wcstod_l

La LC_NUMERIC impostazione locale corrente di categoria, determina il riconoscimento del carattere radice in nptr*;* per ulteriori informazioni, vedere setlocale.Le funzioni senza il suffisso _l utilizzano le impostazioni locali correnti, _strtod_l è identico a _strtod_l con la differenza che utilizzano le impostazioni locali passate in alternativa.Per ulteriori informazioni, vedere Impostazioni locali.

Se endptr non è NULL, il puntatore al carattere che blocca la scansione viene memorizzato nella locazione di memoria indicata da endptr.Se nessuna conversione può essere eseguita (nessuna cifra valida è stata trovata o è stata specificata una base non valida), il valore di nptr viene archiviato all'indirizzo puntato da endptr.

strtod richiede che nptr punti ad una stringa nel seguente formato:

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

Uno whitespace può essere costituito dallo spazio o di caratteri di tabulazione, che vengono ignorati; sign è sia più (+) che meno (–); e digits è una o più cifre decimali.Se nessuna cifra viene visualizzata prima del carattere radice, almeno uno deve apparire dopo il carattere di base.Le cifre decimali possono essere seguite da un esponente, costituito da una lettera introduttiva (d, D, e, o E) e opzionalmente da un signed integer.Se né una parte dell'esponente né un carattere di base viene visualizzato, un carattere di base viene utilizzato per seguire l'ultima cifra nella stringa.Il primo carattere non idoneo interrompe la scansione.

Requisiti

Routine

Intestazione obbligatoria

strtod, _strtod_l

<stdlib.h>

wcstod, _wcstod_l

<stdlib.h> o <wchar.h>

Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'introduzione.

Esempio

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

Equivalente .NET Framework

System::Convert::ToDouble

Vedere anche

Riferimenti

Conversione di dati

Supporto per le operazioni in virgola mobile

Interpretazione delle sequenze di caratteri multibyte

Impostazioni locali

Stringa alle funzioni di valore numerico

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