在http://en.cppreference.com/w/cpp/chrono的實例中,秒數值在double
中獲得。這是我想要的行爲。然而,這似乎依賴於隱含的假設,即時間點減法產生代表秒的值。我找不到任何解釋爲什麼一個持續時間在沒有實際指定時間單位的情況下產生浮點秒的原因。完全不使用auto
,有人可以展示如何明確獲取浮點類型中的時間單位(例如秒),還是指向文檔或解釋爲什麼上述轉換表示秒?獲得計時秒數
有問題的轉換基本上是:
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();
請參閱以下職位轉換的例子。
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
我在參考文獻的頂部看到了我錯過的部分:'tick週期是編譯時有理常量,表示從一個刻度到下一個刻度的秒數。「因此,默認比例爲1:1,持續時間總是代表一秒鐘。感謝您將這引起我的注意。 – taz
'std :: ratio <1, 1000>'可以替換爲'std :: milli'。 –