Problème de division dans une boucle [Résolu]

Signaler
Messages postés
29
Date d'inscription
mardi 7 février 2006
Statut
Membre
Dernière intervention
3 janvier 2011
-
Messages postés
29
Date d'inscription
mardi 7 février 2006
Statut
Membre
Dernière intervention
3 janvier 2011
-
Bonjour,
J'ai un problème dans une bloucle qui envoie un fichier de taille definie vers un serveur. L'envoi marche, mais une division pose problème. Je poste le code:

long size=364957696;

int percentDone=0;

for (int i=0;i<size;i+=65536)

{

long charsToSend = (size-i>65536)?65536:size-i;

file.read(octet,nombreAEnvoyer);

charsSent==send(id_de_la_socket,octet,charsToSend,0);

percentDone=(i*100/size); // <- PROBLEME

// display percentDone...

}

file.close();
...

Le résultat de la division (i*100/size) est au début quand i=0 0, ensuite 0,0,0.... Puis 1,1,1,1... ainsi que 2 3 4 et 5. Jusque la, tout va bien. Mais ensuite elle m'envoie -5 plusieurs fois, -4 -3 -2 -1 0 et recommence avec 0 1 2 3 4 5 puis -5 -4 -3 ... Je suis confus!

Merci de m'aider!

3 réponses

Messages postés
482
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
5 décembre 2009

C'est  i * 100  et non  ii * 100  !!!

Jean-François
Messages postés
482
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
5 décembre 2009

Bonsoir,

La multiplication de i par 100 le fait sortir de sa limite ! Il faut passer par un flottant :

percentDone = (int)( (double)(ii * 100. / size) + 0.5 );

Jean-François
Messages postés
29
Date d'inscription
mardi 7 février 2006
Statut
Membre
Dernière intervention
3 janvier 2011

Merci beaucoup, ca marche !