Compartilhar via


_atodbl, _atodbl_l, _atoldbl, _atoldbl_l, _atoflt, , _atoflt_l

Converte uma cadeia de caracteres para um duplo (_atodbl), duplo longo (_atoldbl) ou float (_atoflt).

Sintaxe

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

Parâmetros

value
O valor de duplo, duplo longo ou float gerado ao converter a cadeia de caracteres em um valor de ponto flutuante. Esses valores são encapsulados em uma estrutura.

str
A cadeia de caracteres a ser analisada para converter em um valor de ponto flutuante.

locale
A localidade a ser usada.

Valor retornado

Retorna 0 se for bem-sucedido. Os possíveis códigos de erro são _UNDERFLOW ou , que são definidos no arquivo <de cabeçalho math.h>_OVERFLOW.

Comentários

Essas funções convertem uma cadeia de caracteres em um valor de ponto flutuante. A diferença entre essas funções e a atof família de funções é que essas funções não geram código de ponto flutuante e não causam exceções de hardware. Em vez disso, condições de erro são relatadas como códigos de erro.

Se uma cadeia de caracteres não tiver uma interpretação válida como um valor de ponto flutuante, value será definida como zero e o valor retornado será zero.

As versões dessas funções que têm o _l sufixo são idênticas às versões que não têm o sufixo, exceto que elas usam o locale parâmetro que é passado em vez da localidade do thread atual.

Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no CRT.

Requisitos

Rotinas Cabeçalho necessário
_atodbl, _atoldbl, _atoflt

_atodbl_l, _atoldbl_l, _atoflt_l
<stdlib.h>

Exemplo

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

Confira também

Conversão de dados
Suporte matemático e de ponto flutuante
Localidade
atof, _atof_l, _wtof, _wtof_l