Fscanf En C , problème tableau float
Résolu/Fermé
A voir également:
- Fscanf En C , problème tableau float
- Tableau croisé dynamique - Guide
- Tableau word - Guide
- Tableau ascii - Guide
- Trier tableau excel - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
4 réponses
quendistu
Messages postés
509
Date d'inscription
lundi 3 novembre 2008
Statut
Membre
Dernière intervention
4 juin 2009
87
5 déc. 2008 à 21:36
5 déc. 2008 à 21:36
Dans le dernier printf, formater en ne conservant qu'une seule décimale : "%f.1" je crois.
Cordialement,
Cordialement,
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
5 déc. 2008 à 22:37
5 déc. 2008 à 22:37
Bonsoir,
En espérant que ces quelques tests répondent à ton interrogation et sont exhaustifs relativement au problème posé :
Résultats :
En espérant que ces quelques tests répondent à ton interrogation et sont exhaustifs relativement au problème posé :
float un = 78.7; double deux = 78.7; long double trois = 78.7; float un1 = 92.3; double deux2 = 92.3; long double trois3 = 92.3;
printf ("\n\n"); printf ("\n\n"); printf ("\n float un f = %f", un); printf ("\n double deux f = %f", deux); printf ("\n double e deux = %e", deux); printf ("\n long double trois f = %f", trois); printf ("\n long double trois e = %e", trois); printf ("\n\n"); printf ("\n float un1 f = %f", un1); printf ("\n double deux2 f = %f", deux2); printf ("\n double e deux2 = %e", deux2); printf ("\n long double trois3 f = %f", trois3); printf ("\n long double trois3 e = %e", trois3);
Résultats :
float un f = 78.699997 double deux f = 78.700000 double deux e = 7.870000e+001 long double trois f = 78.700000 long double trois e = 7.870000e+001 float un1 f = 92.300003 double deux2 f = 92.300000 double deux2 e = 9.230000e+001 long double trois3 f = 92.300000 long double trois3 e = 9.230000e+001
quendistu
Messages postés
509
Date d'inscription
lundi 3 novembre 2008
Statut
Membre
Dernière intervention
4 juin 2009
87
5 déc. 2008 à 23:14
5 déc. 2008 à 23:14
Un double c'est un double float ; le nombre réel est représenté sur plus de bits donc il est plus précis.
Fais un printf("%d %d", sizeof(float), sizeof(double)), tu verras.
Le nombre 92,3 ne tient pas sur un float : aucune combinaison des différents bits d'un float ne correspond à cette valeur. Il est donc "arrondi", par la représentation interne d'un float, à 92,300003.
En revanche il existe une combinaison de bits d'un double qui correspond exactement à 92,3.
Cordialement,
Fais un printf("%d %d", sizeof(float), sizeof(double)), tu verras.
Le nombre 92,3 ne tient pas sur un float : aucune combinaison des différents bits d'un float ne correspond à cette valeur. Il est donc "arrondi", par la représentation interne d'un float, à 92,300003.
En revanche il existe une combinaison de bits d'un double qui correspond exactement à 92,3.
Cordialement,