每当我调用此函数时,我试图在浮点数中将unix时间戳达到毫秒,这可能是30次/秒。下面的函数返回的时间戳总是相同的,但是当我将它打印到std::cerr
时,我得到的值不同。我每次调用函数时都在创建变量,所以我不确定我在这里做错了什么。任何帮助将不胜感激。
float GetUnixTimestamps()
{
float milliseconds_since_epoch =
std::chrono::duration_cast<std::chrono::milliseconds>
(std::chrono::system_clock::now().time_since_epoch()).count();
std::cerr << milliseconds_since_epoch << std::endl;
return milliseconds_since_epoch;
}
编辑:根据建议 我正在使用C ++ 11,需要在Windows x64,x86和Linux(主要是Ubuntu和CentOS)上进行编译。我想在unix中获取当前时间。我已经阅读了S.O帖子19555121和16177295,但时间戳的值仍然保持不变。
答案 0 :(得分:6)
float
的精确度不足以在这里做你想做的事。自1970-01-01以来的当前毫秒数约为1,478,020,169,728。此后float
中的下一个可表示值为1,478,020,300,800。那是大约131s(2分钟)。
double
会在这里做。