_atodbl
, , _atodbl_l
, _atoldbl
, _atoldbl_l
, , _atoflt
_atoflt_l
Konwertuje ciąg na podwójne (), długie podwójne (_atodbl
_atoldbl
) lub zmiennoprzecinkowe (_atoflt
).
Składnia
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
Podwójna, długa podwójna lub zmiennoprzecinkowa wartość utworzona przez przekonwertowanie ciągu na wartość zmiennoprzecinkową. Te wartości są opakowane w strukturę.
str
Ciąg, który ma zostać przeanalizowany w celu przekonwertowania na wartość zmiennoprzecinkową.
locale
Ustawienia regionalne do użycia.
Wartość zwracana
Zwraca wartość 0 w przypadku powodzenia. Możliwe kody błędów to _UNDERFLOW
lub _OVERFLOW
, które są zdefiniowane w pliku <nagłówkowym math.h>.
Uwagi
Te funkcje konwertują ciąg na wartość zmiennoprzecinkową. Różnica między tymi funkcjami a rodziną atof
funkcji polega na tym, że te funkcje nie generują kodu zmiennoprzecinkowego i nie powodują wyjątków sprzętowych. Zamiast tego warunki błędów są zgłaszane jako kody błędów.
Jeśli ciąg nie ma prawidłowej interpretacji jako wartości zmiennoprzecinkowej, value
jest ustawiona na zero, a zwracana wartość to zero.
Wersje tych funkcji, które mają _l
sufiks, są identyczne z wersjami, które nie mają sufiksu, z tą różnicą, że używają parametru locale
przekazanego zamiast bieżących ustawień regionalnych wątku.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Wymagania
Procedur | Wymagany nagłówek |
---|---|
_atodbl , , _atoldbl _atoflt _atodbl_l , , _atoldbl_l _atoflt_l |
<stdlib.h> |
Przykład
// 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
Zobacz też
Konwersja danych
Obsługa obliczeń matematycznych i zmiennoprzecinkowych
ustawienia regionalne
atof
, , _atof_l
, , _wtof
_wtof_l