cs_tintin72
Messages postés122Date d'inscriptionmercredi 16 avril 2003StatutMembreDernière intervention22 juillet 2006
-
9 nov. 2005 à 14:47
cosmobob
Messages postés700Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention27 janvier 2009
-
10 nov. 2005 à 00:21
Bonjour,
J'aimerai savoir comment faire pour ne garder que la partie entière d'un float.
J'ai essayé de "caster" le float en int, et j'ai aussi essayé la fonction floor().
Dans l'ensemble ça marche, mais le problème c'est que lorsque la partie décimale du float est égale à zéro
ex: 94.0000000
ça m'arrondi le nombre à 93 au lieu de le laisser à 94.
cosmobob
Messages postés700Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention27 janvier 20094 9 nov. 2005 à 16:14
salut,
si ca marche pas, c'est parce que qd tu ecris : float f = 94.0, suivant
ta machine, il se peut qu'en fait f vaile 93.999998 ou qqc du genre.
c'est parce que 94.0 n'a pas d'écriture finie en base 2.
cs_tintin72
Messages postés122Date d'inscriptionmercredi 16 avril 2003StatutMembreDernière intervention22 juillet 2006 9 nov. 2005 à 17:58
Houlaa ça m'arrange po du tout !
En fait, j'ai une fonction qui retourne des résultats de divisions en float.
Ce que je voudrais faire c'est récupérer la partie entière pour ensuite l'utiliser en tant que int.
Mais d'aprés ce que tu dis, même si le résultat d'une division tombe juste par (ex: 94) j'aurai en fait 93.9999998 ??????
Y aurait pas un moyen de résoudre ce genre de pb ?
cosmobob
Messages postés700Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention27 janvier 20094 10 nov. 2005 à 00:19
tu peux pas demander une précision infinie a une machine sur laquelle
les reels sont codés que sur une taille finie. si tes algorithmes sont
pas stables numériquement, et que tu travailles avec des nombres reels,
alors ton probleme est mal posé.
si t'es sur que ta division tombe juste, travaille depuis le debut avec des entiers voila tout...
sinon change tes egalités entre float par une difference qui doit etre petite ...
a+
Vous n’avez pas trouvé la réponse que vous recherchez ?