il marche tres bien pour les petit fichier de quelque MO mais quand je veut envoyer un fichier un peut volumineu de 200 MO par exemple, le comteur de pourcentage maffiche le bon resulta pour taille_send et taille_file mais pour ((taille_send*100)/taille_file)
sa maffiche un 100% correcte jusqu'à 6% mais apres sa decend comme sa : -6 -5 -4 -3 -2 -1 0 arriver a zero sa repart normalement : 1 ... 6 -6 -5...
je c'est bien que je mexprime mal et que je fait beaucoup de faute alors sa ne sert a rien de me gronder lol.
++
fcaruso
Messages postés18Date d'inscriptionvendredi 15 avril 2005StatutMembreDernière intervention10 février 2009 3 févr. 2009 à 00:53
c'est parce que tu travaille sur des int
un int, si tu compiles en 32bits, c'est 32 bits, et comme c'est signé, ben... le maxi c'est 2 millions environ.
Divisé par 100, ca fait que passé 20 megas environ, ton pourcentage va partir en vrille....
Y'a plein de facons de faire.
Soit tu cast en double du genre : (((double) taille_send)*100.0)/(double) taille_file.
Sinon, en int ben c'est des maths : taille_send/(taille_ville/100). -> mais attention si taille_ville < 100 tu va avoir une division par zero.
NitRic
Messages postés402Date d'inscriptionmardi 1 mai 2001StatutMembreDernière intervention15 août 2011 5 févr. 2009 à 09:07
fcaruso, signed int c'est un peu plus de 2 milliard et pas million, non signé c'est un peu plus de 4 milliard
d'après moi ce serait plus simple et rapide un entier 64 bits plutôt qu'un lourd flottant, « long long » ou « __int64 » même sur une plate-forme 32bits
en passant, que l'on compile sous Windows 32/64 bits (plate-forme PC), int et long reste 32 bits sauf pour les pointeurs qui deviennent 64 bits sous Windows 64 bits et 32 bits sous Windows 32 bits, pour du 64 bits (Windows 32/64 bits - PC), il y a __int64 (ou « long long » avec le support du C99), sous linux 64 bits (PC) c'est différent, int reste 32 bits mais long devient 64 bits comme les pointeurs, sous linux 32 bits (PC), int et long sont 32 bits, comme les pointeurs ...