Bonjour, voici mon problème:
Je stocke des millisecondes dans une variable 'double'. Je les affiche dans un printf avec %lf.
Jusqu'à 2 millions de ms, sa marche. Mais quand il est censé m'afficher une valeur au alentour d'une heure (3,6 millions de ms) sa passe dans les négatifs, comme s'il avait atteint le maximum stockable dans ce type de donnée(double). Je dis sa car il se passe au près pareil quand on dépasse 32000 et quelque, avec un int.
Je vous donne un bout de code pour mieux visualiser la chose. Je calcul le temps moyen sur 20 essais que met une fonction de Tri a trier un tableau. (20 essais car on réaffecte aleatoirement tout le tableau à chaque fois, pour plus d'objectivité)
(C'est simplifié, je peux donner le code réel en cas)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 int i; clock_t debut, fin; double tps = 0; for(i=0; i<20; i++) { debut = clock(); MaFct(); fin = clock(); tps += (((double)(fin - debut))/CLOCKS_PER_SEC) *1000.0; //en ms } //Affichage du temps moyen printf("%lf", tps/i);
Donc en fct de la taille du tableau (100 à 700000 éléments) que la fonction trie, sa va de 0 à 2 millions de ms. Mais pour la taille au dessus (800 000), le temps n'atteignant pas des milliers de millards de milliseconde, sa devrait rentrer sans problème dans un double non?
Merci d'avance
Partager