atof, _atof_l, _wtof, _wtof_l
Převod řetězce na hodnotu Dvojitá přesnost.
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ý má být převeden.locale
Použité národní prostředí.
Vrácená hodnota
Každá funkce vrátí double hodnoty produkované vstupní znaky interpretovat jako číslo.Pokud vstup nelze převést na hodnotu typu, vrácená hodnota je 0.0.
Ve všech případech mimo rozsah, kód chyby je nastavena na ERANGE.Je-li parametr předaný NULL, je vyvolána neplatný parametr obslužné rutiny, jak je popsáno v Ověření parametru.Pokud smí provádění pokračovat, tyto funkce nastaví errno na EINVAL a vrátí 0.
Poznámky
Tyto funkce převést řetězec znaků na hodnotu s dvojitou přesností a plovoucí desetinnou čárkou.
Vstupní řetězec je posloupnost znaků, které lze interpretovat jako hodnotu zadaného typu.Funkce zastaví čtení vstupního řetězce u prvního znaku, který nebude moci rozpoznat jako část čísla.Tento znak může být znak null ('\0' nebo L '\0') ukončení řetězce.
str Argument atof a _wtof má následující tvar:
[whitespace] [sign] [digits] [.digits] [ {d | D | e | E }[sign]digits]
A whitespace se skládá ze znaků mezera nebo tabulátor, které jsou ignorovány; sign je buď plus (+) nebo minus (-); a digits jsou jedna nebo více desítkových číslic.Žádné číslic se zobrazí napravo od desetinné čárky, alespoň jeden musí být uvedena za desetinnou čárkou.Desítkové číslice může být následován exponent, který se skládá z úvodní písmeno (d, D, e, nebo E) a volitelně podepsané desítkové celé číslo.
Verze těchto funkcí s příponou _l jsou stejné s tím rozdílem, že používají parametr předaného národního prostředí namísto aktuálního národního prostředí.
Rutinní mapování obecného textu
Rutina TCHAR.H |
_UNICODE & _MBCS není definováno |
_MBCS definováno |
_UNICODE definováno |
---|---|---|---|
_tstof |
atof |
atof |
_wtof |
_ttof |
atof |
atof |
_wtof |
Požadavky
Routine(s) |
Požadované záhlaví |
---|---|
atof |
<Math.h> a <stdlib.h> |
_atof_l |
<Math.h> a <stdlib.h> |
_wtof, _wtof_l |
<stdlib.h> nebo <wchar.h> |
Příklad
Tento program ukazuje, jak lze převést čísla uložená jako řetězce na číselných hodnot pomocí atof funkce.
// crt_atof.c
//
// This program shows how numbers stored as
// strings can be converted to numeric
// values using the atof function.
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
char *str = NULL;
double value = 0;
// 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 'd' exponential formatting keyword.
str = "3.1412764583d210";
value = atof( str );
printf( "Function: atof( \"%s\" ) = %e\n", str, value );
// An example of the atof function
// using the 'e' exponential formatting keyword.
str = " -2309.12E-15";
value = atof( str );
printf( "Function: atof( \"%s\" ) = %e\n", str, value );
}