begin process at 2012 05 30 01:46:46
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Maths & Algorithmes

 > 

probleme d'arrondi


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

probleme d'arrondi

mardi 1 mars 2005 à 12:59:39 | probleme d'arrondi

Darkan

   bonjour
j'ai un probleme d'arrondi avec les float. Pourtant je n'ai fait aucune conversion, je ne fait qu'ajouter des floats entre eux. En fait, au lieu d'avoir 5, j'aurais 4.99999999...

merci d'avance ^^

mardi 1 mars 2005 à 13:10:46 | Re : probleme d'arrondi

tibob51

Membre Club
Saluts a toi,
Les "float" ne sont pas de très grand précision,si tu veux avoir une bonne précision utilise des "double" ils son beaucoup plus précis mais prenne plus de place en mémoire 64 bits contre 32.
Voilà
A++;
mardi 1 mars 2005 à 13:52:14 | Re : probleme d'arrondi

jul39dole

mais il y aura toujours des problèmes d'arrondi avec les réels, car l'ordi utilise des puissances de 2, au lieu de puissances de 10, d'où le 4.9999. Pour l'ordi, des chiffres "ronds" ont une partie fractionnaire multiple de 2, par exemple 1.25 ou 5.625 par exemple etc...
C'est pour cela que lorsque il n'est pas possible d'utiliser des entiers, lors d'une comparaison par exemple, il faut prévoir une marge d'erreur :

float x;
if(x<5,001 && x>4.999)
 {
   //on considère = 5
   ...
  }
mardi 1 mars 2005 à 14:39:03 | Re : probleme d'arrondi

tibob51

Membre Club

bool fonction()
{
double d=12.25;
d+=1.52;       //Cette fonction retournera vrai
if (d ==13.77)
return true;
else
return false
}


bool fonction()
{
float f =12.25;
f+=1.52;          //Mais pas celle-ci
if (f  == 13.77)
return true;
else
return false
}

mardi 1 mars 2005 à 14:42:34 | Re : probleme d'arrondi

jul39dole

il est vrai que cela marche pour ces nombres là (peut de chiffres après la virgule), mais d'une manière générale ce n'est pas correct.
Cordialement.
mardi 1 mars 2005 à 14:53:16 | Re : probleme d'arrondi

tibob51

Membre Club
Ya plus précis que double????
mardi 1 mars 2005 à 17:00:25 | Re : probleme d'arrondi

Darkan

   c'est chiant, ya pas moyen de passer a travers ce probleme? par ce que j'aimerais changer le "pas" de mon perso dans un jeu par rapport au ftp, mais comme vous l'avez dis, ya que 0,125 et tout ses multiples qui marchent.

   je sais pas mais gerer ce probleme avec if(x<5,001 && x>4.999)
 {
   //on considère = 5
   ...
  }

ca fait pas tres propre, surtout que dans de nombreuse sources, ils n'ont pas l'air d'avoir ce probleme, donc voila
mardi 1 mars 2005 à 18:38:23 | Re : probleme d'arrondi

jul39dole

plus de précision que double, je ne crois pas, a moins de passer par des classes spécialement crées. Par contre j'ai entendu parler de "long double", je ne sais pas si c équivalent a double...
tu peux utiliser des macros d'arrondis sinon (pour limiter les décimales)
lundi 28 mars 2005 à 18:34:48 | Re : probleme d'arrondi

Darkan

en fait, j'ai beau les utiliser, ca change rien... (j'utilise nearint ou un truc dans le genre)

vendredi 20 mai 2005 à 15:40:24 | Re : probleme d'arrondi

islem1982



SIGMA
j'ai presque le même problème avec ces floats "chiants" et je crois que j'ai une source qui pourrait peut être t'aider 
la réponse est un peu tardive mais si tu est encore planté ds ce probleme mieux vaut tard que jamais


/* Compile options needed: none. Value of c is printed with a decimal point precision of 10 and  6 (printf rounded value by default) to show the difference */ #include <stdio.h> #define EPSILON 0.0001   // Define your own tolerance #define FLOAT_EQ(x,v) (((v - EPSILON) < x) && (x <( v + EPSILON))) void main() {     float a,b,c     a=1.345f;     b=1.123f;     c=a+b;    //if (FLOAT_EQ(c, 2.468))        // Remove comment for correct result    if (c == 2.468)                 //Comment this line for correct result    printf("They are equal\n"); else    printf("They are not equal!!The value of c is %13.10f,or %f",c,c); }


Cette discussion est classée dans : arrondi, probleme


Répondre à ce message

Sujets en rapport avec ce message

Probleme avec round [ par darkwhite ] Salut a tous je suis en train de faire un code ultra simple qui arrondi un nombre : #include #include int main(){  double value;  scanf("%f",&value);  probleme d'arrondi avec SQL Server 2005 [ par LaTatadu91 ] Bonjour,Voila je viens de me rendre compte d'un petit soucis lors de mes différentes lectures sur des tables situées sous SQL Server 2005.par exemple API windows (Probleme avec SendMessage(.... WM_SETTEXT.....) [ par rivaldinho ] Salut, voici le code que j'utilise pour écrire dans la zone texte de notepadint main(){    HWND hWnd, hWnd2; // Handles de fenêtre    hWnd = FindWindo probleme d'organisation [ par ouatt121 ] s'il vous plait j'ai un projet en C++le sujet est la gestion de reservation d'un hotel mon probleme est que je ne sais pas comment organiser les class petit probleme de debuant pour fusionner plusieurs fichiers excel [ par magorr ] bonjour,je suit tous nouveau ici et dans la programmationj'ai une petite question de débutant ;)voila je vais être le plus claire possible :j'ai plusi besoin d'aide pour un probleme avec les liste chainees [ par boulhech27 ] bonjou à tous. voici mon probleme. je n'arrive pas à trouver comment chercher le nombre d'occurence dans ma liste chainéevu que je copie des string d' probleme en c++ GRAPHQUE [ par dadou28 ] BONJOUR j'ais une problème pour le c++graphique c'est que j'admet une application qui demande une realisation des interfaces ,intrface principale fa probleme avec les fichiers [ par cyas7 ] Bjr,je programme en C et je vien de rencontrer un problème lors de l'ouverture d'un fichier avec la fonction  fopen();le programme s'arrete en afficha Probleme bete [ par Klemklem ] Bonjour, J'ai un petit probleme enervant mais qui je pense peut se resoudre facilement.J'ai mon programme while (time{coutcin>>etat;if(etat ==0){ sou Petit Probleme SDL... [ par nahoof ] Voila, c'est le premier "vrai" programme (codé en C) que je realise et j'ai un petit problème avec la SDL :   Je suis en train de creer un jeu de poke


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 : 5,101 sec (3)

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