Condividi tramite


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 arresta la scansione.

  • locale
    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 in double. La funzione strtod converte nptr a un valore a precisione doppia. La funzione strtod arresta 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 di testo generico

Routine TCHAR.H

_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 arresta 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 numero 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 arresta 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 dei dati

Supporto a virgola mobile

Interpretazione di sequenze di caratteri multibyte

Impostazioni locali

Funzioni da stringa a 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