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:
    1. Chaîne facultative de caractères blancs
    2. Un signe facultatif
    3. Une chaîne non vide de chiffres contenant éventuellement un caractère de base
    4. 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:
    1. Chaîne facultative de caractères blancs
    2. Un signe facultatif
    3. 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.

Remarque: A partir de IBM® AIX® 6 avec le niveau de technologie 7 et de IBM AIX 7 avec le niveau de technologie 1, la précision des routines de conversion à virgule flottante, de la famille de fonctions printf et scanf a été augmentée de 17 à 37 chiffres pour les valeurs doubles et longues.

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