Freigeben über


_atodbl, _atodbl_l, _atoldbl, _atoldbl_l, _atoflt _atoflt_l

Konvertiert eine Zeichenfolge in einen double (_atodbl)-, long double (_atoldbl)- oder float (_atoflt)-Wert.

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

Parameter

  • value
    Der double-, long double- oder float-Wert, der erstellt wird, indem die Zeichenfolge in einen Gleitkommawert konvertiert wird. Diese Werte werden in eine Struktur eingeschlossen.

  • str
    Die zu analysierende Zeichenfolge, die in einen Gleitkommawert konvertiert wird.

  • locale
    Das zu verwendende Gebietsschema.

Rückgabewert

Gibt bei Erfolg 0 zurück. Mögliche Fehlercodes sind _UNDERFLOW oder _OVERFLOW, die in der Headerdatei "Math.h" definiert werden.

Hinweise

Diese Funktionen konvertieren eine Zeichenfolge in einen Gleitkommawert. Der Unterschied zwischen diesen Funktionen und der atof-Familie der Funktionen ist der, dass diese Funktionen keinen Gleitkommacode generieren und keine Hardwareausnahmen verursachen. Stattdessen werden Fehlerzustände als Fehlercodes gemeldet.

Wenn eine Zeichenfolge keine gültige Interpretation als Gleitkommawert aufweist, wird value auf 0 gesetzt und der Rückgabewert ist 0.

Die Versionen dieser Funktionen mit dem _l-Suffix sind identisch mit den Versionen, die keinen Suffix haben, verwenden jedoch den übergebenen Gebietsschemaparameter anstelle des aktuellen Threadgebietsschemas.

Anforderungen

Routinen

Erforderlicher Header

_atodbl, _atoldbl, _atoflt

_atodbl_l, _atoldbl_l, _atoflt_l

<stdlib.h>

Beispiel

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

Siehe auch

Referenz

Datenkonvertierung

Gleitkommaunterstützung

Locale

atof, _atof_l, _wtof, _wtof_l