Lire deux fois à l'aide de fscanf
Je veux lire double à partir de fichier texte
par exemple
31 39.9316476397222 116.113516352222
J'ai essayé les deux, pas de travail. Je ne peux que lire les premières décimales numérique par exemple 39.93164 mais pas 39.9316476397222
quelqu'un sait pourquoi? Merci!
int NodeID;
double _lat,_long;
fscanf (pFile, "%d %lf %lf", &NodeID,&_lat,&_long);
printf ("I have read: %d %f %f\n", NodeID,_lat,_long);
fscanf (pFile, "%d %lf %lf", &NodeID,&_lat,&_long);
printf ("I have read: %d %lf %lf\n", NodeID,_lat,_long);
Veuillez lire le manuel pour ce
printf
.OriginalL'auteur dykw | 2013-07-25
Vous devez vous connecter pour publier un commentaire.
Je pense que les chiffres sont lus correctement. Votre problème est dans votre impression, ce qui vous fait penser que vous n'avez pas le nombre entier. Gardez à l'esprit que
printf
généralement sorties seulement quelques chiffres après le point décimal.Je vous suggère de faire ceux-ci:
printf
des appels, utiliser un spécificateur de format comme ceci: "%.20f
". Il raconteprintf
de sortie 20 chiffres après le point décimal.float
oudouble
oulong double
, il va avoir une précision limitée et de la résolution. Familiarisez-vous avec les nombres à virgule flottante et la façon dont ils fonctionnent et sont représentés.Comprendre que votre
scanf
travaillait déjà; le problème était (et est et sera) en base 2 des nombres en virgule flottante et en base 10 des nombres réels ne sont pas les mêmes. Vous ne pouvez pas représenter beaucoup de beaucoup de beaucoup de nombres réels à l'aide du flotteur point; même des nombres réels avec seulement une précision limitée.OriginalL'auteur yzt
Selon la fscanf page de man, vous devez utiliser
%lf
double :OriginalL'auteur toddwz