_atodbl, _atodbl_l, _atoldbl, _atoldbl_l, _atoflt _atoflt_l

Converte uma seqüência de caracteres em um double (_atodbl), longa duas vezes ()_atoldbl), or 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
    Double, long double ou flutuar valor produzido por converter a cadeia de caracteres para um valor de ponto flutuante.Esses valores são encapsulados 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; possíveis códigos de erro 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 ponto flutuante e, portanto, não resultam em exceções de hardware. Em vez disso, sistema autônomo condições de erro são relatadas sistema autônomo um código de erro.

Se uma seqüência de caracteres não tiver uma interpretação válida sistema autônomo um valor de ponto flutuante, value é definido sistema autônomo zero e o retorno valor é zero.

As versões dessas funções com o _l sufixo são idênticas exceto que usarem o parâmetro de localidade passado em vez da localidade do thread corrente.

Requisitos

Rotinas de

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: 1.#INF00 Return value: 3

Consulte também

Referência

Conversão de Dados

Suporte de ponto flutuante

Localidade

atof, _atof_l, _wtof, _wtof_l