atof atoff Sous-routine
Objectif
Convertit une chaîne ASCII en nombre à virgule flottante ou à virgule flottante double.
Bibliothèques
Bibliothèque C standard (libc.a)
Syntaxe
#include <stdlib.h> double atof (NumberPointer)
const char *NumberPointer; float atoff (NumberPointer)
char *NumberPointer; Descriptif
La sous-routine atof convertit une chaîne de caractères pointée par le paramètre NumberPointer en nombre à virgule flottante à double précision. La sous-routine atoff convertit une chaîne de caractères, pointée par le paramètre NumberPointer , en un nombre à virgule flottante à simple précision. Le premier caractère non reconnu termine la conversion.
A l'exception du comportement en cas d'erreur, la sous-routine atof est équivalente à l'appel de sous-routine strtod , avec le paramètre EndPointer défini sur (char * *) NULL.
A l'exception du comportement en cas d'erreur, la sous-routine atoff est équivalente à l'appel de sous-routine strtof , avec le paramètre EndPointer défini sur (char * *) NULL.
Ces sous-routines reconnaissent une chaîne de caractères lorsque les caractères sont dans l'un des deux formats suivants: nombres ou symboles numériques.
- Pour qu'une chaîne soit reconnue comme un nombre, elle doit contenir les éléments suivants dans l'ordre suivant:
- Chaîne facultative de caractères blancs
- Un signe facultatif
- Une chaîne non vide de chiffres contenant éventuellement un caractère de base
- Un exposant facultatif au format E ou au format E suivi d'un entier éventuellement signé.
- Pour qu'une chaîne soit reconnue comme un symbole numérique, elle doit contenir les éléments suivants dans l'ordre suivant:
- Chaîne facultative de caractères blancs
- Un signe facultatif
- Une des chaînes de caractères : INF, infini, NaNQ, NaNS ou NaN (insensible à la casse)
La sous-routine atoff ne fait pas partie de la bibliothèque ANSI C. Ces sous-routines sont au moins aussi précises que celles requises par la norme IEEE pour l'arithmétique à virgule flottante binaire. La sous-routine atof accepte au moins 17 chiffres décimaux significatifs. La sous-routine atoff accepte au moins 9 0 de tête. Les 0 de début ne sont pas comptés comme des chiffres significatifs.
Paramètres
| Article | Descriptif |
|---|---|
| NumberPointer | Indique une chaîne de caractères à convertir. |
| EndPointer | Indique un pointeur vers le caractère qui a mis fin à l'analyse ou une valeur nulle. |
Valeurs renvoyées
Une fois l'opération terminée, les sous-routines atofet atoff renvoient la valeur convertie. Si aucune conversion n'a pu être effectuée, la valeur 0 est renvoyée et la variable globale errno est définie pour indiquer l'erreur.
Codes d'erreur
Si la conversion ne peut pas être effectuée, la valeur 0 est renvoyée et la variable globale errno est définie pour indiquer l'erreur.
Si la conversion provoque un dépassement (c'est-à-dire que la valeur est en dehors de la plage des valeurs pouvant être représentées), +/- HUGE_VAL est renvoyé avec le signe indiquant le sens du dépassement et la variable globale errno est définie sur ERANGE.
Si la conversion entraîne un sous-flux, une valeur correctement signée de 0 est renvoyée et la variable globale errno est définie sur ERANGE.
La sous-routine atoff ne comporte qu'une seule erreur d'arrondi. (Si la sous-routine atof est utilisée pour créer un nombre à virgule flottante à double précision, puis que ce nombre à double précision est converti en nombre à virgule flottante, deux erreurs d'arrondi peuvent se produire.)