Sdílet prostřednictvím


atof, _atof_l, _wtof, _wtof_l

Převeďte řetězec na dvojitou hodnotu.

Syntaxe

double atof(
   const char *str
);
double _atof_l(
   const char *str,
   _locale_t locale
);
double _wtof(
   const wchar_t *str
);
double _wtof_l(
   const wchar_t *str,
   _locale_t locale
);

Parametry

str
Řetězec, který se má převést.

locale
Národní prostředí, které se má použít.

Vrácená hodnota

Každá funkce vrátí hodnotu vytvořenou double interpretací vstupních znaků jako čísla. Vrácená hodnota je 0,0, pokud vstup nelze převést na hodnotu tohoto typu.

Ve všech případech errno mimo rozsah je nastavena hodnota ERANGE. Pokud je NULLparametr předán , je vyvolána neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Pokud je možné pokračovat spuštěním, tyto funkce jsou nastavené errno na EINVAL hodnotu 0 a vrátí hodnotu 0.

Poznámky

Tyto funkce převedou řetězec znaků na hodnotu s plovoucí desetinnou čárkou s dvojitou přesností.

Vstupní řetězec je posloupnost znaků, kterou lze interpretovat jako číselnou hodnotu zadaného typu. Funkce přestane číst vstupní řetězec na prvním znaku, který nedokáže rozpoznat jako součást čísla. Tento znak může být znak null (\0 nebo L'\0'), který ukončuje řetězec.

Argument stratof_wtof a má následující tvar:

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

Jedná whitespace se o mezeru nebo znaky tabulátoru, které se ignorují; sign jsou plus (+) nebo minus (-) a digits jsou jedna nebo více desetinných číslic. Pokud se před desetinnou čárkou nezobrazí žádné číslice, musí se za desetinnou čárkou objevit alespoň jedna číslice. Za desetinnými číslicemi může následovat exponent, který se skládá z úvodního písmena (enebo E) a volitelně podepsaného desetinného čísla.

Verze těchto funkcí UCRT nepodporují převod fortran-style (d nebo D) exponentních písmen. Toto nestandardní rozšíření bylo podporováno dřívějšími verzemi CRT a může se jednat o zásadní změnu kódu.

Verze těchto funkcí s příponou _l jsou shodné s tím rozdílem, že místo aktuálního národního prostředí používají locale parametr předaný.

Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.

Mapování rutin obecného textu

TCHAR.H Rutinní _UNICODE a _MBCS není definován _MBCS Definovány _UNICODE Definovány
_tstof atof atof _wtof
_ttof atof atof _wtof

Požadavky

Rutiny Požadovaný hlavičkový soubor
atof, _atof_l C: <math.h> nebo <stdlib.h> C++: <cstdlib>, <stdlib.h>nebo <cmath><math.h>
_wtof, _wtof_l C: <stdlib.h> nebo <wchar.h> C++: <cstdlib>nebo <stdlib.h><wchar.h>

Příklad

Tento program ukazuje, jak lze čísla uložená jako řetězce převést na číselné hodnoty pomocí atof funkcí a _atof_l funkcí.

// crt_atof.c
//
// This program shows how numbers stored as
// strings can be converted to numeric
// values using the atof and _atof_l functions.

#include <stdlib.h>
#include <stdio.h>
#include <locale.h>

int main(void)
{
    char    *str = NULL;
    double value = 0;
    _locale_t fr = _create_locale(LC_NUMERIC, "fr-FR");

    // An example of the atof function
    // using leading and training spaces.
    str = "  3336402735171707160320 ";
    value = atof(str);
    printf("Function: atof(\"%s\") = %e\n", str, value);

    // Another example of the atof function
    // using the 'E' exponential formatting keyword.
    str = "3.1412764583E210";
    value = atof(str);
    printf("Function: atof(\"%s\") = %e\n", str, value);

    // An example of the atof and _atof_l functions
    // using the 'e' exponential formatting keyword
    // and showing different decimal point interpretations.
    str = "  -2,309e-25";
    value = atof(str);
    printf("Function: atof(\"%s\") = %e\n", str, value);
    value = _atof_l(str, fr);
    printf("Function: _atof_l(\"%s\", fr)) = %e\n", str, value);
}
Function: atof("  3336402735171707160320 ") = 3.336403e+21
Function: atof("3.1412764583E210") = 3.141276e+210
Function: atof("  -2,309e-25") = -2.000000e+00
Function: _atof_l("  -2,309e-25", fr)) = -2.309000e-25

Viz také

Převod dat
Podpora pro matematiku a plovoucí desetinou čárku
Národní prostředí
_ecvt
_fcvt
_gcvt
setlocale, _wsetlocale
_atodbl, _atodbl_l, _atoldbl, _atoldbl_l, _atoflt, _atoflt_l