Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将std::chrono::高分辨率类型转换为浮点类型?_C++ - Fatal编程技术网

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";