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 NULL
parametr 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 str
atof
_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 (e
nebo 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 rutina |
_UNICODE a _MBCS není definován |
_MBCS definovaný |
_UNICODE definovaný |
---|---|---|---|
_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é
Konverze 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