_atodbl
, _atodbl_l
, _atoldbl
, _atoldbl_l
, , _atoflt
_atoflt_l
Převede řetězec na dvojitou (_atodbl
), dlouhou dvojitou (_atoldbl
) nebo plovoucí (_atoflt
).
Syntaxe
int _atodbl( _CRT_DOUBLE * value, char * str );
int _atodbl_l ( _CRT_DOUBLE * value, char * str, _locale_t locale );
int _atoldbl( _LDOUBLE * value, char * str );
int _atoldbl_l ( _LDOUBLE * value, char * str, _locale_t locale );
int _atoflt( _CRT_FLOAT * value, const char * str );
int _atoflt_l( _CRT_FLOAT * value, const char * str, _locale_t locale );
Parametry
value
Dvojitá, dlouhá dvojitá nebo plovoucí hodnota vytvořená převodem řetězce na hodnotu s plovoucí desetinnou čárkou. Tyto hodnoty jsou zabalené do struktury.
str
Řetězec, který se má analyzovat a převést na hodnotu s plovoucí desetinnou čárkou.
locale
Národní prostředí, které se má použít
Vrácená hodnota
Vrátí hodnotu 0, pokud je úspěšná. Možné kódy chyb jsou _UNDERFLOW
nebo _OVERFLOW
které jsou definovány v souboru <hlaviček math.h>.
Poznámky
Tyto funkce převedou řetězec na hodnotu s plovoucí desetinnou čárkou. Rozdíl mezi těmito funkcemi a sadou funkcí spočívá v atof
tom, že tyto funkce negenerují kód s plovoucí desetinou čárkou a nezpůsobují výjimky hardwaru. Místo toho se chybové stavy oznamují jako kódy chyb.
Pokud řetězec nemá platnou interpretaci jako hodnotu s plovoucí desetinnou čárkou, value
nastaví se na nulu a vrácená hodnota je nula.
Verze těchto funkcí, které mají příponu _l
, jsou stejné verze, které nemají příponu, s tím rozdílem, že používají locale
parametr předaný místo aktuálního národního prostředí vlákna.
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.
Požadavky
Rutiny | Požadovaný hlavičkový soubor |
---|---|
_atodbl , , _atoldbl _atoflt _atodbl_l , , _atoldbl_l _atoflt_l |
<stdlib.h> |
Příklad
// crt_atodbl.c
// Uses _atodbl to convert a string to a double precision
// floating point value.
#include <stdlib.h>
#include <stdio.h>
int main()
{
char str1[256] = "3.141592654";
char abc[256] = "abc";
char oflow[256] = "1.0E+5000";
_CRT_DOUBLE dblval;
_CRT_FLOAT fltval;
int retval;
retval = _atodbl(&dblval, str1);
printf("Double value: %lf\n", dblval.x);
printf("Return value: %d\n\n", retval);
retval = _atoflt(&fltval, str1);
printf("Float value: %f\n", fltval.f);
printf("Return value: %d\n\n", retval);
// A non-floating point value: returns 0.
retval = _atoflt(&fltval, abc);
printf("Float value: %f\n", fltval.f);
printf("Return value: %d\n\n", retval);
// Overflow.
retval = _atoflt(&fltval, oflow);
printf("Float value: %f\n", fltval.f);
printf("Return value: %d\n\n", retval);
return 0;
}
Double value: 3.141593
Return value: 0
Float value: 3.141593
Return value: 0
Float value: 0.000000
Return value: 0
Float value: inf
Return value: 3
Viz také
Konverze dat
Podpora pro matematiku a plovoucí desetinou čárku
Národní prostředí
atof
, _atof_l
, , _wtof
_wtof_l