Sdílet prostřednictvím


strtod, _strtod_l, wcstod, _wcstod_l

Převod řetězce na hodnotu Dvojitá přesnost.

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

Parametry

  • nptr
    Řetězec zakončený null pro převod.

  • endptr
    Ukazatel na znak, který zastaví skenování.

  • locale
    Použité národní prostředí.

Vrácená hodnota

strtod vrátí číslo s plovoucí desetinnou čárkou, kromě případů, kdy reprezentace by mohla způsobit přetečení. V takovém případě funkce vrací hodnotu +/–HUGE_VAL.Znaménko HUGE_VAL odpovídá znaménku hodnoty, kterou nelze vyjádřit.strtod vrátí hodnotu 0, pokud převod lze provést nebo dochází k podtečení.

wcstod vrátí hodnoty analogicky k strtod.Pro obě funkce je errno nastavena na ERANGE v případě, že dojde k přetečení nebo podtečení a vyvolá se neplatná obslužná rutina parametru, jak je popsáno v tématu Ověření parametru.

Viz _doserrno, kód chyby, _sys_errlist a _sys_nerr Další informace o této a dalších návratové kódy.

Poznámky

Každá funkce převede vstupní řetězec nptr na double.strtod Funkce převede nptr na hodnotu Dvojitá přesnost.strtod zastaví čtení řetězce nptr u prvního znaku, který nebude rozpoznán jako část čísla.Může to být ukončující znak null.wcstod je širokoznaká verze strtod; její parametr nptr je širokoznaký řetězec.Tyto funkce se chovají jinak identicky.

Rutinní mapování obecného textu

Rutina TCHAR.H

_UNICODE & _MBCS není definováno

_MBCS definováno

_UNICODE definováno

_tcstod

strtod

strtod

wcstod

_tcstod_l

_strtod_l

_strtod_l

_wcstod_l

LC_NUMERIC Kategorie nastavení pro aktuální národní prostředí určuje rozpoznávání znaků radix v nptr*;* Další informace naleznete v tématu setlocale.Funkce bez _l příponu použít aktuální národní prostředí; _strtod_l je totožný s _strtod_l s tím rozdílem, že používají místo něho předán národní prostředí.Další informace naleznete v tématu Národní prostředí.

Pokud endptr není NULL, ukazatel znaku, který zastavil skenování, je uložen v umístění, na které ukazuje endptr.Pokud žádné převody nemohou být provedeny (nebyly nalezeny žádné platné číslice nebo byla zadána neplatná základna), hodnota nptr je uložena na adrese, na kterou odkazuje endptr.

strtod očekává, že nptr ukáže na řetězec v následujícím formátu:

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

whitespace se může skládat ze znaků mezera a tabulátor, které jsou ignorovány; sign je plus (+) nebo minus (–); a digits je jedna nebo více desítkových číslic.Žádné se před číselnou soustavou znaků nenachází žádná číslice, poslední číslice se musí nacházet za číselnou soustavou znaků.Může být následován desítkami číslic exponentu, které se skládají z úvodního písmene (d, D, e nebo E) a volitelného znaménka.Pokud se nezobrazí část exponenty ani číselná soustava znaků, předpokládá se, že číselná soustava znaků postupuje podle poslední číslice v řetězci.První znak, který neodpovídá tomuto formuláři, zastaví prohledávání.

Požadavky

Rutina

Požadované záhlaví

strtod, _strtod_l

<stdlib.h>

wcstod, _wcstod_l

<stdlib.h> nebo <wchar.h>

Další informace o kompatibilitě naleznete v úvodu tématu Kompatibilita.

Příklad

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

Ekvivalent v rozhraní .NET Framework

System::Convert::ToDouble

Viz také

Referenční dokumentace

Převod dat

Podpora plovoucí desetinné čárky

Výklad sekvencí vícebajtových znaků

Národní prostředí

Funkce řetězců na numerické hodnoty

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