В примере на 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
Я вижу часть, которую я пропустил в верхней части ссылки: «период тика - это рациональная константа времени компиляции, представляющая количество секунд от одного тика до следующего». Поэтому, учитывая соотношение по умолчанию 1: 1, период длительности всегда составляет одну секунду. Спасибо, что привлек это к моему вниманию. – taz
'std :: ratio <1, 1000>' можно заменить на 'std :: milli'. –