Chronomètre en C et précision

Résolu
Cereale_killer -  
 Cereale_killer -
Bonjour,

J'ai codé un chronomètre en C en utilisant la bibliothèque time.h, malgré l'utilisation de variable type float, la fonction ne me retourne que des valeurs type partie-entière.000000 secondes.
j'aimerais savoir s'il est possible que la fonction retourne des durées précises au delà de la virgule et non arrondies à la seconde la plus proche ?

Voici mon code :


#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
time_t debut, fin ;
double difference ;
int touche ;

debut=time(NULL) ;


printf("Appuyez sur espace pour stopper le chronometre") ;

do
{
touche=getch() ;
} while(touche!=' ') ;

fin=time(NULL) ;
difference = difftime(fin, debut) ;
printf("\n\nIl s'est ecoule %lf secondes", difference) ;

return 0;
}


Merci.
A voir également:

6 réponses

Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
ahhh j'ai compris !

la fonction time() retourne des secondes ! Elle ne peut donc que renvoyer un nombre précis de secondes, mais pas de morceaux de secondes. La différence est donc arrondie, à cause de la fonction time() elle-même.

si tu veux faire un chronomètre il faut utiliser la fonction clock() ! http://www.cplusplus.com/reference/ctime/clock/
6
Cereale_killer
 
Merci !
2
Cereale_killer
 
C'est bon c'est exactement ce que je voulais, juste y a t'il possible d'afficher un chiffre avec une précision de 3 chiffres après la virgule au lieu de 6 ?

Voici mon code :

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
clock_t debut, fin ;
long clk_tck = CLOCKS_PER_SEC ;
double difference ;
int touche, escape ;


debut=clock() ;
printf("Appuyez sur espace pour stopper le chronometre") ;

do
{
do
{
touche=getch() ;
} while(touche!=' ') ;

system("cls") ;

fin=clock() ;
difference = (double)(fin-debut)/(double)clk_tck ;

printf("\n\nIl s'est ecoule %lf secondes\n\n", difference) ;
escape=getch() ;
} while(escape!=27) ;





return 0;
}


Merci
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
oui en utilisant : %.3f au lieu de ton %lf .
0
Cereale_killer > Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention  
 
Je viens d'essayer, ca ne marche pas, la précision est encore à 6 chiffres après la virgule..
0
Cereale_killer
 
Merci beaucoup !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Cereale_killer
 
Je viens d'essayer, ca ne marche pas, la précision est encore à 6 chiffres après la virgule...
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
ben pourtant si... je viens d'essayer en faisant un copié collé de ton code.

T'es sûr que t'as recompilé après changement ?
0
Cereale_killer
 
Effectivement après avoir retesté ca marche !
Merci !
0