Chronomètre en C et précision

Résolu
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.

6 réponses

  1. 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
    1. 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
      1. oui en utilisant : %.3f au lieu de ton %lf .
        0
      2. @PacorabanixJe viens d'essayer, ca ne marche pas, la précision est encore à 6 chiffres après la virgule..
        0
    2. Je viens d'essayer, ca ne marche pas, la précision est encore à 6 chiffres après la virgule...
      0
      1. 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
    3. Effectivement après avoir retesté ca marche !
      Merci !
      0