Quelle est la différence dans l'utilisation de %f, %e, %g, %E ou %G avec scanf?
En C, il n'existe aucune différence dans les spécificateurs de format %f, %e, %g, %E et %G lorsqu'il est utilisé pour lire dans une variable de type float avec scanf? Autrement dit, le comportement de l'extrait de code
float x;
scanf("%<one of f, e, g, E, G>", &x);
jamais dépendre du choix de l'entrepreneur?
J'ai d'abord supposé que %f serait seulement interpréter la notation décimale correctement, et %e serait seulement interpréter la notation scientifique correctement, mais sur mon système, chacun d'eux fonctionne bien dans les deux cas. Mais peut-être que mon système est libéral...
Je ne pouvais pas trouver tout précis à ce sujet dans mes livres ou sur le web...
Vous pouvez lire par exemple référence.
Merci - cette référence est sur le C++, c'est pourquoi je n'ai pas entièrement confiance en elle avant de... Édité ma question maintenant, l'ajout de "C"
POSIX page de
Merci - cette référence est sur le C++, c'est pourquoi je n'ai pas entièrement confiance en elle avant de... Édité ma question maintenant, l'ajout de "C"
POSIX page de
fscanf()
reflète le C standard et ajoute quelques (marquées) les extensions. Il est dit que la conversion des prescripteurs a
, e
, f
, g
, A
, E
, F
, G
toutes les manipuler des nombres à virgule flottante dans l'un des formats. Les exposants sont toujours acceptés (mais pas obligatoire). Les points décimaux sont acceptés, mais pas obligatoire.OriginalL'auteur lee77 | 2013-11-10
Vous devez vous connecter pour publier un commentaire.
La réponse ci-dessus se réfère à C++, mais la même chose est vraie pour C.
De "7.19.6.2 La fonction fscanf" dans le "La version finale de la norme C99 avec corrigenda TC1, TC2 et TC3 inclus, sous la forme d'un projet de" (lien copié à partir de http://en.wikipedia.org/wiki/C99):
Donc
%f, %e, %g, %E, %G
tous se comportent de façon identique lorsque numérisation numéros, que vous expérimentés.OriginalL'auteur Martin R
f,e,g
toutes sont nombre à virgule FlottanteDe la doc:-
Également vérifier ce référence qui dit qu'il(
f,e,g
) correspond à un nombre à virgule flottante.OriginalL'auteur Rahul Tripathi
C affiche à la fois le float et double variables à six décimales. Cela ne se réfère PAS à la précision (exactitude), dont le nombre est en fait stockée, seulement le nombre de décimales
printf()
utilise pour afficher ces types de variables.Le programme suivant illustre la façon dont les différents types de données sont déclarées et affiche:
SORTIE
OriginalL'auteur Keshav Bansal
%f: imprime le numéro correspondant comme un nombre décimal à virgule flottante nombre, par exemple 214.52
%e: Il imprime le nombre en notation scientifique, par exemple 214.52 e+2.
%g: Il imprime le numéro correspondant dans le plus court entre les deux, par exemple, Dans les deux exemples ci-dessus, si je veux imprimer le nombre par le biais de %g alors il serait 214.52 mais pas le 2.145 e+2, car il est plus long.
De sortie:
12.500000
1.250000 e+001
12.5
OriginalL'auteur Sameer Sharma
OriginalL'auteur mohit