_atodbl, _atodbl_l, _atoldbl, _atoldbl_l, _atoflt _atoflt_l
Konwertuje ciąg na podwójny (_atodbl), podwójny długi (_atoldbl) lub zmiennoprzecinkowy (_atoflt).
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 wartość zmiennoprzecinkowa, która jest wytwarzana przez przekonwertowanie ciągu na wartość zmiennoprzecinkowa.Te wartości są zapakowane w strukturze.str
Ciąg można przeanalizować, aby przekonwertować wartości zmiennoprzecinkowe.locale
Ustawienia regionalne do użycia.
Wartość zwracana
Zwraca wartość 0, jeśli kończy się pomyślnie.Możliwe kody błędów są _UNDERFLOW lub _OVERFLOW, które są zdefiniowane w pliku nagłówku Math.h.
Uwagi
Te funkcje konwertują ciąg znaków do wartości całkowitych.Różnica między tymi funkcjami i atof rodziną funkcji jest taka, że te funkcje nie generują kodu zmiennoprzecinkowego i nie powodują wyjątków sprzętowych.Zamiast tego, błędy są zgłaszane jako kody błędów.
Jeśli ciąg nie posiada prawidłowej interpretacji jako wartość zmiennoprzecinkowa, value jest ustawiona na zero i wartość zwracana wynosi zero.
Wersje tych funkcji, które mają przyrostek _l są identyczne z wersjami, które go nie mają, z tą różnicą, że korzystają z przekazanego parametru ustawień regionalnych, zamiast bieżącego wątku lokalnego.
Wymagania
Procedury |
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;
}