Manpages

NOM

strtod, strtof, strtold - Convertir une chaîne ASCII en nombre à virgule flottante

SYNOPSIS

#include <stdlib.h>

double strtod(const char *nptr, char **endptr);
float strtof(const char *
nptr, char **endptr);
long double strtold(const char *
nptr, char **endptr);

Exigences de macros de test de fonctionnalités pour la glibc (consulter feature_test_macros(7)) :

strtof(), strtold() :

_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L

DESCRIPTION

Les fonctions strtod(), strtof() et strtold() convertissent la portion initiale de la chaîne pointée par nptr en un réel de type double, float, et long double respectivement.

La (portion initiale de la) chaîne attendue est de la forme suivante : des espaces éventuels en tête, ou des caractères interprétés comme tels par isspace(3), un éventuel signe plus (« + ») ou moins (« - »), et ensuite soit (i) un nombre décimal, soit (ii) un nombre hexadécimal, soit (iii) un infini, soit (iv) un non nombre NAN (not-a-number).

Un nombre décimal consiste en une séquence non vide de chiffres décimaux, pouvant contenir un point décimal (dépendant de la localisation, mais habituellement « . »), suivi éventuellement d’un exposant décimal. Ce dernier est constitué d’un « E » ou « e » suivi éventuellement du signe plus ou du signe moins, puis une séquence non vide de chiffres décimaux, indiquant la multiplication par une puissance de 10.

Un nombre hexadécimal commence « 0x » ou « 0X », suivi d’une séquence non vide de chiffres hexadécimaux, pouvant contenir un point décimal suivi éventuellement d’un exposant binaire. Ce dernier est constitué d’un « P » ou « p » suivi éventuellement du signe plus ou du signe moins, puis une séquence non vide de chiffres décimaux, indiquant la multiplication par une puissance de 2. Il ne peut y avoir plus d’un point ou d’un exposant binaire.

Un infini est soit « INF », soit « INFINITY », sans tenir compte des différences entre majuscules et minuscules.

A NAN is "NAN" (disregarding case) optionally followed by a string, (n-char-sequence), where n-char-sequence specifies in an implementation-dependent way the type of NAN (see NOTES).

VALEUR RENVOYÉE

Ces fonctions renvoient la valeur convertie si c’est possible.

Si endptr n’est pas NULL, un pointeur sur le caractère suivant le dernier caractère converti est stocké dans l’emplacement pointé par endptr.

If no conversion is performed, zero is returned and (unless endptr is null) the value of nptr is stored in the location referenced by endptr.

Si la valeur convertie déclenche un débordement (overflow), la fonction renvoie plus ou moins HUGE_VAL (HUGE_VALF, HUGE_VALL) et errno contient le code d’erreur ERANGE. Si la valeur convertie déclenche un débordement inférieur (underflow), la fonction renvoie 0, et errno contient le code d’erreur ERANGE.

ERREURS

ERANGE

Débordement.

ATTRIBUTS

Pour une explication des termes utilisés dans cette section, consulter attributes(7).

CONFORMITÉ

POSIX.1-2001, POSIX.1-2008, C99.

strtod() was also described in C89.

NOTES

Comme la valeur 0 peut légitimement être renvoyée à la fois en cas de succès et d’échec, le programme appelant doit positionner errno à 0 avant l’appel, et déterminer si une erreur s’est produite en regardant si errno a une valeur non nulle après l’appel.

In the glibc implementation, the n-char-sequence that optionally follows "NAN" is interpreted as an integer number (with an optional ’0’ or ’0x’ prefix to select base 8 or 16) that is to be placed in the mantissa component of the returned value.

EXEMPLES

Consultez l’exemple dans la page de manuel strtol(3) ; l’utilisation des fonctions décrites dans cette page de manuel est identique.

VOIR AUSSI

atof(3), atoi(3), atol(3), nan(3), nanf(3), nanl(3), strfromd(3), strtol(3), strtoul(3)

COLOPHON

Cette page fait partie de la publication 5.07 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies et la dernière version de cette page, peuvent être trouvées à l’adresse https://www.kernel.org/doc/man-pages/.

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>;, Stéphan Rafin <stephan.rafin [AT] laposte.net>, Thierry Vignaud <tvignaud [AT] mandriva.com>, François Micaux, Alain Portal <aportal [AT] univ-montp2.fr>, Jean-Philippe Guérard <fevrier [AT] tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon [AT] wanadoo.fr>, Julien Cristau <jcristau [AT] debian.org>, Thomas Huriaux <thomas.huriaux [AT] gmail.com>, Nicolas François <nicolas.francois [AT] centraliens.net>, Florentin Duneau <fduneau [AT] gmail.com>, Simon Paillard <simon.paillard [AT] resel.fr>, Denis Barbier <barbier [AT] debian.org> et David Prévot <david [AT] tilapin.org>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à <debian-l10n-french [AT] lists.org>.