Compartilhar via


_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;
}
  

Consulte também

Referência

Conversão de Dados

Suporte de ponto flutuante

Localidade

atof, _atof_l, _wtof, _wtof_l