[Débutant] Question sur printf et les float

Question sur printf et les float [Débutant] - C - Programmation

Marsh Posté le 23-09-2005 à 17:29:17    

Bonjour à tous,
Je débute sous C etj'ai une question qui va sans doute paraître couillone.
Soit le code suivant:  :)  
 

Code :
  1. #include <stdio.h>
  2. int main()
  3. {
  4.   float f = 234.567;
  5.   printf ("f vaut: %f\\n",f);
  6. }


 
Un gcc plus tard plus tard, je suis fébrile a l'idée de voir le résultat. Et là c'est le drame; j'obtiens  
f vaut: 234.567001

 
Quelqu'un saurait-il d'où sort le "1" final et pourquoi je n'ai pas 234.567000  
Merci par avance pour vos lumières  :jap:

Reply

Marsh Posté le 23-09-2005 à 17:29:17   

Reply

Marsh Posté le 23-09-2005 à 18:13:20    


faut déclarer f en tant que double

Reply

Marsh Posté le 23-09-2005 à 18:19:12    

Effectivement ca marche avec double
Mais pourquoi ca ne marche pas avec float?

Reply

Marsh Posté le 23-09-2005 à 18:31:25    

ça ne marche avec double que par chance.
De plus, printf converti ton float en double. Si tu compiles en optimisant, ton float risque de sauter et tu auras le même résultat qu'avec un vrai double. (parce que tu init ton float avec un double).
 
 
Pourquoi ? http://cch.loria.fr/documentation/ [...] ldberg.pdf

Reply

Marsh Posté le 23-09-2005 à 18:50:33    

cyril3325 a écrit :


Code :
  1. #include <stdio.h>
  2. int main()
  3. {
  4.   float f = 234.567;
  5.   printf ("f vaut: %f\\n",f);
  6. }


 
Un gcc plus tard plus tard, je suis fébrile a l'idée de voir le résultat. Et là c'est le drame; j'obtiens  
f vaut: 234.567001

 
Quelqu'un saurait-il d'où sort le "1" final et pourquoi je n'ai pas 234.567000  


 
La représentation interne des flottants est une approximation. La précision est meilleure avec 'double' .


#include <stdio.h>
 
int main (void)
{
   double f = 234.567;
 
   printf ("f vaut: %f\n", f);
   return 0;
}


Message édité par Emmanuel Delahaye le 23-09-2005 à 18:53:05

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed