Nell'esempio http://en.cppreference.com/w/cpp/chrono il valore dei secondi viene ottenuto in un double
. Questo è il comportamento che voglio. Tuttavia, questo sembra basarsi sul presupposto implicito che la sottrazione del punto temporale produce un valore che rappresenta secondi. Non riesco a trovare nulla che spieghi perché una durata produce secondi in virgola mobile quando non viene specificata alcuna unità temporale. Senza utilizzare auto
, qualcuno può mostrare come ottenere in modo esplicito un'unità di tempo come secondi in un tipo a virgola mobile o indirizzarmi alla documentazione o alla spiegazione del perché la conversione di cui sopra rappresenta i secondi?Ottiene il cronometro in virgola mobile
La conversione in questione è essenzialmente:
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();
Vedi le seguenti posti per esempi di conversione.
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
Vedo la parte che ho perso nella parte superiore del riferimento: il periodo di tick è una costante razionale in fase di compilazione che rappresenta il numero di secondi da un segno di spunta al successivo. Quindi, dato il rapporto predefinito di 1: 1, un il periodo di durata rappresenta sempre un secondo. Grazie per avermelo fatto notare. – taz
'std :: ratio <1, 1000>' può essere sostituito con 'std :: milli'. –