ATOF |
Alpha à Virgule flottante |
---|---|
Langage C++ | cstdlib (stdlib.h) |
Syntaxe
double atof(const char *str); |
Paramètres
Nom | Description |
---|---|
str | Ce paramètre permet d'indiquer la chaîne de caractères à convertir |
Description
Cette fonction convertie une chaîne de caractères en une valeur «float».
Remarques
- La fonction atof() convertit la chaîne de caractères pointée par str en une valeur de type de données double. La chaîne de caractères doit contenir un nombre à virgule flottante valide. Si ce n'est pas le cas, la valeur renvoyée n'est pas définie.
- Le nombre peut se terminer par n'importe quel caractère ne pouvant pas faire partie d'un nombre à virgule flottante valide. Cette situation inclut les espaces blancs, la ponctuation (autres que les points) et les caractères autres que «E» ou «e». Cette situation signifie que si la fonction atof() est appelé avec "100.00GLADIR", la valeur 100.00 sera retournée.
- Définition et utilité : La fonction atof (ASCII to floating point) est utilisée pour convertir une chaîne de caractères (const char*) en un nombre à virgule flottante de type double. Elle est définie dans l'entête <cstdlib>. Cette fonction est couramment utilisée lorsqu'il est nécessaire de convertir des données textuelles représentant des nombres flottants, par exemple, lors de la lecture de données depuis un fichier ou d'une entrée utilisateur.
- La fonction prend une chaîne de caractères en entrée et retourne sa valeur équivalente sous forme de double. Si la chaîne représente un nombre valide, la conversion est effectuée. Sinon, le résultat est 0.0.
- Comportement en cas d'entrée invalide : Si la chaîne de caractères ne peut pas être interprétée comme un nombre valide, atof renverra la valeur 0.0. Cela se produit si la chaîne de caractères est vide, contient des caractères non numériques ou n'a pas un format de nombre valide (par exemple, une lettre ou un symbole non numérique au milieu du texte). Par exemple :
- Gestion des espaces et des symboles : La fonction atof ignore les espaces blancs au début de la chaîne de caractères. Par contre, elle ne gère pas les erreurs de manière sophistiquée. Si la chaîne commence par un espace ou contient des espaces au milieu, atof s'arrêtera à ce point et convertira ce qui a été analysé avant l'espace en un nombre. Par exemple :
- Précision et Limitations : La fonction atof retourne un résultat de type double. Cela signifie que la conversion peut être sujette à des erreurs d'arrondi, en particulier lorsque la chaîne représente un nombre très grand ou très petit. De plus, atof ne détecte pas les dépassements de capacité ou les erreurs liées à des nombres très précis, ce qui peut conduire à une perte de précision ou à des résultats incorrects si la chaîne est mal formatée.
- Absence de gestion des erreurs : Contrairement à d'autres fonctions comme strtod, renvoyant des informations supplémentaires sur les erreurs ou l'arrêt de la conversion, atof ne fournit aucune indication explicite sur l'échec de la conversion. Il n'y a pas de mécanisme de gestion des erreurs permettant de savoir si la chaîne de caractères était invalide ou non, ce qui rend son usage plus risqué dans des contextes où une gestion stricte des erreurs est nécessaire.
- Conversion de nombres en format scientifique : La fonction atof peut gérer les nombres en format scientifique. Cela signifie qu'elle peut
convertir des chaînes telles que "1.23e3" ou "4.5E-2" en leur équivalent à virgule flottante. Le résultat de ces conversions sera un nombre valide en double. Par exemple&nbps;:
- Recommandations d'utilisation : Bien que atof soit simple et largement utilisée, il est généralement recommandé d'utiliser des alternatives plus robustes pour la conversion de chaînes de caractères en nombres, telles que strtod ou std::stod (en C++11 et versions ultérieures), offrant une meilleure gestion des erreurs et des informations supplémentaires sur les échecs de conversion. Par exemple, std::stod lance une exception std::invalid_argument en cas de chaîne de caractères invalide, ce qui permet une gestion plus explicite des erreurs.
Exemple
Voici quelques exemples typiques de l'utilisation de cette fonction :

on obtiendra le résultat suivant :
atof('12')=12.000000atof('13.14')=13.140000
atof('-7')=-7.000000
atof('-7E-05')=-0.000070
Voir également
Langage de programmation - C - Référence de procédures et fonctions - atof
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 730.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 33.
Dernière mise à jour : Lundi, le 3 août 2015