begin process at 2012 05 29 07:03:04
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

incrémentation de float


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

incrémentation de float

vendredi 1 août 2008 à 01:35:08 | incrémentation de float

hacker_mt

Bonjour tout le monde, voici mon probleme c'est surement assez débile mais je n'arrive pas a trouver comment faire, voici mon code :
main(){
       float i, j;
       printf("%f\n", g);
       i=0;
       scanf("%f", &j);
       while(i<5){
                  printf("%f, %f\n", i, j);
                  if(i==j){
                           printf("%f", i);
                           }
                           i=i+0.1;
                           }
       Sleep(20000);
       }
Le probleme c'est que i devrait prendre les valeurs 0; 0.1; ......; 4.9; 5 alors que en fait dans mon programme il n'a pas de valeur precise par exemple quand i devrait etre egale a 4.9, il est en fait egale a 4.899998.
Comment résoudre ce probleme merci d'avance.
vendredi 1 août 2008 à 01:36:30 | Re : incrémentation de float

hacker_mt

arf oubliez la ligne printf("%f\n", g);
elle est en trop ^^
vendredi 1 août 2008 à 07:37:12 | Re : incrémentation de float

Lucky92

Déclare i en double.
vendredi 1 août 2008 à 13:19:03 | Re : incrémentation de float

hacker_mt

Merci maintenant la valeur de i est precise reste encore un probleme :
le if(i==j) ne fonctionne pas !?!?
vendredi 1 août 2008 à 14:11:59 | Re : incrémentation de float

juju12

Réponse acceptée !
les nombres flottants sont d'une précision limitée; ainsi il ne faut jamais écrire d'égalité, mais vérifier que, par exemple, la différence entre deux nombres est inférieurs à une valeur d'erreur limite :

#define EPSILON (0.00001)
__int32

_CheckEquals(double a,double b)
{
double diff=a-b;
*(
__int64*)&diff&=0x7FFFFFFFFFFFFFFF; // valeur absolue
return (diff<EPSILON)?1:0;
}
vendredi 1 août 2008 à 14:15:48 | Re : incrémentation de float

Lucky92

Il ne faut jamais utiliser l'opérateur == pour comparer des flottants.

#include <limits>
#include <cmath>
using namespace std;
...
const double eps = numeric_limits<double>::epsilon();
...
if ( abs( i - j ) < eps )
{
...
}
vendredi 1 août 2008 à 14:23:20 | Re : incrémentation de float

hacker_mt

Merci beaucoup pour toutes ces info très interessantes,  mon programme marche a merveille !
Encore merci et Bonne Prog !


Cette discussion est classée dans : probleme, printf, egale, float, incrémentation


Répondre à ce message

Sujets en rapport avec ce message

pb incrementation variable. [ par conan76 ] Voila j'ai passé l'après midi a chercher d'ou vient mon problème sans succès.je tente même de faire des affichages console avant et après incrémentati probleme de comparaison de membre de structure par rapport a une donnée de fichier [ par Yossi ] bonjour struct adherents{ int numadherent; char nom[25]; char prenom[30]; char adresse[80]; char cp[5]; char ville[40]; };j'ai un probleme (surement u probleme avec les couleurs [ par sparetime ] bonsoirsous dos en graphique je peux utiliser outtext et printf pour afficher du texte mais quant à changer la couleur je peux le faire avec outext av tourne en rond, besoin d'aide [ par jekburn ] Seriez-vous me dire quelle mon erreur dans ce programme ?#include int main(){ float somme(float n,float y[50]);float x[50],z[50];float n,i;printf("com probleme lors de la saisie de données pour mon répertoir [ par doggy59115 ] Bonjour a tous, j'ai un petit probleme avec mon programme en C. Lors de l'affichage des données saisies, le nom et le numero de telephone ne forment q probleme strcmp [ par ben3020 ] Bonjour à tous Je suis nouveau ds la prog C et j'ai un probleme ave la fonction strcmp : #include #include int main(void) { int cnp; char filename petit probleme avec printf [ par c_raf ] bonsoir a tous je reviens encore une fois car je viens de reussir mon convertisseur hexadecimal => binaire mais la seul chose que je ne parviens pas a probleme [ par chinois57 ] bjr tt le monde voila g un probleme je voudrer maitre ce code ( en C) qui marche en console dans une fenetre windows application merci de maider   #in PROBLEME SINUS [ par COLLECTION ] Bonjour c'est encore moi je travail en C en mode consoleaidez moi a trouver l'erreur#include #include main (){float B , C , sinangle ;long float PI = probleme de formatage [ par psycho ] bonjour!voila, je suis en train de programmer un logiciel en C (pas C++), et j utilise des entiers de type long.j utilise printf de stdio.hprobleme j


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales