Dans l'exemple à http://en.cppreference.com/w/cpp/chrono la valeur des secondes est obtenue dans un double
. C'est le comportement que je veux. Cependant, cela semble reposer sur l'hypothèse implicite que la soustraction du point temporel donne une valeur qui représente les secondes. Je ne trouve rien qui explique pourquoi une durée donne des secondes flottantes quand aucune unité de temps n'est spécifiée. Sans utiliser auto
, quelqu'un peut-il montrer comment obtenir explicitement une unité de temps comme des secondes dans un type à virgule flottante, ou me diriger vers une documentation ou une explication expliquant pourquoi la conversion susmentionnée représente des secondes?Obtenir les secondes chrono dans le flotteur
La conversion en question est essentiellement:
std::chrono::time_point<std::chrono::system_clock> start = std::chrono::system_clock::now();
std::chrono::time_point<std::chrono::system_clock> end = std::chrono::system_clock::now();
std::chrono::duration<double> elapsed_seconds = end-start; // why does this represent seconds as opposed to some other time unit?
double secondsInDouble = elapsed_seconds.count();
Voir les messages suivants pour des exemples de la conversion.
How to get duration, as int milli's and float seconds from <chrono>?
C++ chrono - get duration as float or long long
getting chrono time in specific way
Chrono Timer Not Converting Seconds Properly
Je vois la partie que j'ai ratée en haut de la référence: 'tick period est une constante rationnelle à la compilation représentant le nombre de secondes d'une tick à la suivante. Donc, étant donné le ratio par défaut de 1: 1, un la période de durée représente toujours une seconde. Merci d'avoir porté cela à mon attention. – taz
'std :: ratio <1, 1000>' peut être remplacé par 'std :: milli'. –