Partager via


_fcvt

Convertir un nombre à virgule flottante en chaîne. Une version plus sécurisée de cette fonction est disponible ; voir _fcvt_s.

Syntaxe

char *_fcvt(
   double value,
   int count,
   int *dec,
   int *sign
);

Paramètres

value
Nombre à convertir.

count
Nombre de chiffres après la virgule décimale.

dec
Pointeur désignant la position de la virgule décimale stockée.

sign
Pointeur désignant l’indicateur de signe stocké.

Valeur retournée

_fcvt retourne un pointeur vers la chaîne de chiffres, NULL en cas d’erreur.

Notes

La fonction _fcvt convertit un nombre à virgule flottante en une chaîne de caractères se terminant par un caractère Null. Le paramètre value est le nombre à virgule flottante à convertir. _fcvt stocke les chiffres de value sous forme de chaîne et ajoute un caractère null (« \0 »). Le paramètre count spécifie le nombre de chiffres à stocker après la virgule décimale. Les chiffres en trop sont arrondis au niveau de count positions après la virgule. Si le nombre de chiffres de précision est inférieur à count, la chaîne est remplie de zéros.

Le nombre total de chiffres retournés par _fcvt ne dépasse _CVTBUFSIZEpas .

Seuls des chiffres sont stockés dans la chaîne. La position de la virgule décimale et le signe de value peuvent être obtenus à partir de dec et sign après l’appel. Le paramètre dec désigne une valeur entière ; celle-ci indique la position de la virgule décimale par rapport au début de la chaîne. Une valeur entière ou zéro indique que la virgule décimale est située à gauche du premier chiffre. Le paramètre sign désigne un entier indiquant le signe de value. L’entier est défini sur 0 si value est positif, et sur un nombre différent de zéro si value est négatif.

La différence entre _ecvt et _fcvt réside dans l’interprétation du paramètre count. _ecvt interprète count comme le nombre total de chiffres dans la chaîne de sortie, tandis que _fcvt interprète count en tant que nombre de chiffres après la virgule décimale.

_ecvt et _fcvt utilisent une seule mémoire tampon allouée de manière statique pour la conversion. Chaque appel à une de ces routines détruit les résultats de l’appel précédent.

Cette fonction valide ses paramètres. Si dec ou est NULL, ou count sign est 0, le gestionnaire de paramètres non valide est appelé, comme décrit dans la validation des paramètres. Si l’exécution est autorisée à continuer, errno est définie EINVALsur , et NULL est retournée.

Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.

Spécifications

Fonction En-tête requis
_fcvt <stdlib.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility.

Exemple

// crt_fcvt.c
// compile with: /W3
// This program converts the constant
// 3.1415926535 to a string and sets the pointer
// buffer to point to that string.

#include <stdlib.h>
#include <stdio.h>

int main( void )
{
   int  decimal, sign;
   char *buffer;
   double source = 3.1415926535;

   buffer = _fcvt( source, 7, &decimal, &sign ); // C4996
   // Note: _fcvt is deprecated; consider using _fcvt_s instead
   printf( "source: %2.10f   buffer: '%s'   decimal: %d   sign: %d\n",
            source, buffer, decimal, sign );
}
source: 3.1415926535   buffer: '31415927'   decimal: 1   sign: 0

Voir aussi

Conversion de données
Prise en charge des fonctions mathématiques et à virgule flottante
atof, , _atof_l_wtof, ,_wtof_l
_ecvt
_gcvt