_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