_atodbl, _atodbl_l, _atoldbl, _atoldbl_l, _atoflt _atoflt_l
Converte uma seqüência em um double (_atodbl), long double (_atoldbl), ou float (_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,
char * str
);
int _atoflt_l(
_CRT_FLOAT * value,
char * str,
locale_t locale
);
Parâmetros
value
A dobra, long double ou flutuar o valor produzido por converter a seqüência em um valor de ponto flutuante.Esses valores são envolvidos em uma estrutura.str
A seqüência de caracteres a ser analisado para converter em um valor de ponto flutuante.locale
A localidade para usar.
Valor de retorno
Retorna 0 se obtiver êxito; códigos de erro possíveis são _UNDERFLOW ou _OVERFLOW, definido no arquivo de cabeçalho Math.h.
Comentários
Essas funções convertem uma seqüência de caracteres em um valor de ponto flutuante.A diferença entre essas funções e o atof família de funções é que essas funções não geram código de ponto flutuante e, portanto, não resultam em exceções de hardware.Em vez disso, as condições de erro são relatadas como um código de erro.
Se uma seqüência de caracteres não tiver uma interpretação válida como um valor de ponto flutuante, value é definido como zero e o retorno de valor é zero.
As versões dessas funções com o _l sufixo são idênticas exceto que eles usam o parâmetro de localidade passado em vez da localidade do thread atual.
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;
}