C++ 如何将std::chrono::高分辨率类型转换为浮点类型?
我想将C++ 如何将std::chrono::高分辨率类型转换为浮点类型?,c++,C++,我想将std::chrono::high_resolution_clock start转换为浮点类型。我尝试使用static_cast,但仍然不断出现编译错误 invalid static_cast from type 'std::chrono::_V2::system_clock::time_point {aka std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long lo
std::chrono::high_resolution_clock start
转换为浮点类型。我尝试使用static_cast,但仍然不断出现编译错误
invalid static_cast from type 'std::chrono::_V2::system_clock::time_point {aka std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long long int, std::ratio<1ll, 1000000000ll> > >}' to type 'float'
float duration = static_cast<float>(start) + static_cast<float>(ms);
从类型“std::chrono::_V2::system_clock::time_point{aka std::chrono::time_point}”到类型“float”的静态转换无效
浮动持续时间=静态施法(开始)+静态施法(毫秒);
及
从类型'std::chrono::millizes{aka std::chrono::duration}'转换为类型'float'的静态转换无效
浮动持续时间=静态施法(开始)+静态施法(毫秒);
代码:
std::chrono::毫秒ms(5000);
std::chrono::高分辨率时钟::时间点开始=std::chrono::高分辨率时钟::现在();
浮动持续时间=静态施法(开始)+静态施法(毫秒);
你不能用这样的时间点来获得持续时间。请尝试以下方法:
std::chrono::steady_clock::time_point start = std::chrono::steady_clock::now();
std::chrono::steady_clock::time_point end = std::chrono::steady_clock::now();
float dur_seconds = std::chrono::duration<float>(end - start).count();
你不能用这样的时间点来获得持续时间。请尝试以下方法:
std::chrono::steady_clock::time_point start = std::chrono::steady_clock::now();
std::chrono::steady_clock::time_point end = std::chrono::steady_clock::now();
float dur_seconds = std::chrono::duration<float>(end - start).count();
我不知道任何标准的时钟类型可以使用浮动。你的目标是什么?解决方法可能会让您使用
.count()
intead。我正在尝试创建一个计时器,用于设置伺服运动的持续时间。您希望浮点表示什么?秒数?如果是这样的话,从什么开始的秒数?我希望浮点表示毫秒,然后将持续时间除以伺服的递增位置,使其随时间移动。我不知道任何标准时钟类型可以使用浮点。你的目标是什么?解决方法可能会让您使用.count()
intead。我正在尝试创建一个计时器,用于设置伺服运动的持续时间。您希望浮点表示什么?秒数?如果是,从什么开始的秒数?我希望浮点表示毫秒,然后将持续时间除以伺服的递增位置,使其随时间移动。在某个点上是否有持续时间
到std::chrono::second
?std::chrono::duration
是否保证以秒为单位?这是有道理的。我看了一下,模板参数Period
的默认值为std::ratio
,表示单位为秒的持续时间。@FrançoisAndrieux Yepp!为了使它更完整一点,我还添加了一个比率示例。在某个点上是否应该有一个持续时间
到std::chrono::second
?std::chrono::duration
是否保证以秒为单位?这是有道理的。我看了一下,模板参数Period
的默认值为std::ratio
,表示单位为秒的持续时间。@FrançoisAndrieux Yepp!为了使它更完整一点,我还添加了一个比率示例。
std::chrono::steady_clock::time_point start = std::chrono::steady_clock::now();
std::chrono::steady_clock::time_point end = std::chrono::steady_clock::now();
float dur_seconds = std::chrono::duration<float>(end - start).count();
float dur_milli = std::chrono::duration<float, std::milli>(end - start).count();
std::cout << "time spent: " << dur_seconds << " seconds\n";
std::cout << "time spent: " << dur_milli << " milliseconds\n";