Aller au contenu
Sony

pb avec les float sous builder c++

Messages recommandés

pour mieu expliquer mon pb g mi un exemple ci dessous ou les deux variable sont déclarées en float

 

aux = 2;

valeur = aux/10;

 

valeur devrait etre égale a 0.2

mais au lieu de ca valeur est égale 0.2000000987

ya til une solution pour éviter cela ???

Partager ce message


Lien à poster
Partager sur d’autres sites

En effet, c'est ... spécial !

Essaye ca :

aux = 2;

valeur = aux/10.0;

 

ou ca :

aux = 2;

valeur = aux/(float)10;

 

Sinon essaye les double ...

 

Automne

Partager ce message


Lien à poster
Partager sur d’autres sites

ben en fait c'est un probleme de précision je pense.

Le probleme disparait donc quand tu passes en double.

 

De toute facon, il vaut mieux bosser en double vu que toutes la lib mathematiques utilisent les doubles. A mon avis, y a une raison.

 

Je ne connais pas bien ton compilo mais regarde s'il n'y a pas des options genre : initialiser les variables à 0 ou des modifications sur les floats.

 

En tout cas, ca sent le bug de compilo là. C'est pas la premiere fois que j'entend parler de ce genre de problemes sur les floats en utilisant le compilo de Borland.

 

Automne

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est pas un problème de compilo, c'est juste que les float étant stockés sur une place mémoire limitée, et codant pour une telle quantité de nombres, qu'il est impossible de trouver un float se rapprochant plus de 0,2 que 0,2000000987.

 

Deux solutions à ce problème : utiliser plus d'espace mémoire pour coder le nombre, ou utiliser un type qui soit plus "restreint" sur le nombre de données codées.

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×