Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
799 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [Débutant] Question sur printf et les float

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Débutant] Question sur printf et les float

n°1206118
cyril3325
Posté le 23-09-2005 à 17:29:17  profilanswer
 

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:

mood
Publicité
Posté le 23-09-2005 à 17:29:17  profilanswer
 

n°1206156
juju286
Posté le 23-09-2005 à 18:13:20  profilanswer
 


faut déclarer f en tant que double

n°1206160
cyril3325
Posté le 23-09-2005 à 18:19:12  profilanswer
 

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

n°1206170
Taz
bisounours-codeur
Posté le 23-09-2005 à 18:31:25  profilanswer
 

ç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

n°1206192
Emmanuel D​elahaye
C is a sharp tool
Posté le 23-09-2005 à 18:50:33  profilanswer
 

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/

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [Débutant] Question sur printf et les float

 

Sujets relatifs
[débutant] remplir jtable avec requete3 bugs : z-index, scroll indésiré et float à l'impression
[débutant][Swing] StackOverflow à la création d'un composantPHP registers globals, question de priorités
Débutant , aimerait apprendre le VB[Débutant] Webdesigner a besoin d'aide pour PHP
débutant: problème applet javaune question toute bête
[Binaire] Question 
Plus de sujets relatifs à : [Débutant] Question sur printf et les float


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR