Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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