我目前正在将 a 舍入std::chrono::duration<float>为std::chrono::duration<uint32_t>,当我给它超出范围的值时,它会舍入为 ,1s而不是4294967295s。
看看标准,它说
Run Code Online (Sandbox Code Playgroud)template <class ToDuration, class Rep, class Period> constexpr ToDuration round(const duration<Rep, Period>& d);[...]
返回:其中可表示的值 tToDuration最接近d。[...]
这是我的确切代码:
#include <chrono>
#include <cstdio>
#include <limits>
#include <cstdint>
int main()
{
std::chrono::duration<float> seconds{std::numeric_limits<float>::max()};
printf("float: %f\n", seconds.count());
printf("uint32_t: %u\n", std::chrono::round<std::chrono::duration<uint32_t>>(seconds).count());
printf(" int32_t: %d\n", std::chrono::round<std::chrono::duration<int32_t>>(seconds).count());
printf("uint64_t: %lu\n", std::chrono::round<std::chrono::duration<uint64_t>>(seconds).count());
printf(" int64_t: %ld\n", std::chrono::round<std::chrono::duration<int64_t>>(seconds).count());
}
Run Code Online (Sandbox Code Playgroud)
哪个输出
float: 340282346638528859811704183484516925440.000000
uint32_t: 1
int32_t: -2147483647
uint64_t: 9223372036854775809
int64_t: -9223372036854775807
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,其他整数类型的行为也很奇怪。与等人不同的是std::lround, …
我找到了这个很酷的exrc文件来制作F-Keys的东西,例如map #2 :set number,它只是放在那个ex命令中,并让我按回车确认.然而,我做了一个关闭(map #4 :q),如果它自动添加一个输入我想它,所以它只是关闭,我不必先按Enter键.然后我会点击它关闭.
如何添加输入字符?