_atodbl, _atodbl_l, _atoldbl, _atoldbl_l, _atoflt, _atoflt_l

Converte una stringa in double (_atodbl), long double (_atoldbl) o float (_atoflt).

Sintassi

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 );

Parametri

value
Il valore double, long double o float prodotto dalla conversione della stringa in valore a virgola mobile. Viene eseguito il wrapping di questi valori in una struttura.

str
La stringa da analizzare per la conversione in valore a virgola mobile.

locale
Impostazioni locali da usare.

Valore restituito

Restituisce 0 in caso di esito positivo. I codici di errore possibili sono _UNDERFLOW o _OVERFLOW, definiti nel file <di intestazione math.h>.

Osservazioni:

Queste funzioni convertono una stringa in un valore a virgola mobile. La differenza tra queste funzioni e la atof famiglia di funzioni è che queste funzioni non generano codice a virgola mobile e non causano eccezioni hardware. Al contrario, le condizioni di errore vengono segnalate come codici di errore.

Se una stringa non ha un'interpretazione valida come valore a virgola mobile, value è impostata su zero e il valore restituito è zero.

Le versioni di queste funzioni con il _l suffisso sono identiche alle versioni che non hanno il suffisso, ad eccezione del fatto che usano il locale parametro passato anziché le impostazioni locali del thread corrente.

Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.

Requisiti

Routine Intestazione obbligatoria
_atodbl, _atoldbl, _atoflt

_atodbl_l, _atoldbl_l, _atoflt_l
<stdlib.h>

Esempio

// 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

Vedi anche

Conversione dei dati
Supporto matematico e a virgola mobile
impostazioni locali
atof, _atof_l, _wtof, _wtof_l