_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 _CVTBUFSIZE
pas .
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 EINVAL
sur , 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