_atodbl
, _atodbl_l
, _atoldbl
, _atoldbl_l
, _atoflt
, _atoflt_l
Konvertiert eine Zeichenfolge in einen double (_atodbl
)-, long double (_atoldbl
)- oder float (_atoflt
)-Wert.
Syntax
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 sind.
Hinweise
Diese Funktionen konvertieren eine Zeichenfolge in einen Gleitkommawert. Der Unterschied zwischen diesen Funktionen und der atof
Funktionsfamilie besteht darin, dass diese Funktionen keinen Gleitkommacode generieren und keine Hardware-Ausnahmen verursachen. Stattdessen werden Fehlerzustände als Fehlercodes gemeldet.
Wenn eine Zeichenfolge keine gültige Interpretation als Gleitkommawert aufweist, value
wird auf Null festgelegt, und der Rückgabewert ist Null.
Die Versionen dieser Funktionen mit dem _l
Suffix sind identisch mit den Versionen, die nicht über das Suffix verfügen, mit der Ausnahme, dass sie den Parameter verwenden, der locale
anstelle des aktuellen Threadgebietsschemas übergeben wird.
Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Informationen zum Ändern dieses Verhaltens finden Sie im Global state in the CRT.
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;
}
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
Siehe auch
Datenkonvertierung
Mathematische und Gleitkommaunterstützung
Gebietsschema
atof
, _atof_l
, _wtof
, _wtof_l
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für