在后续调用中为时间戳获取相同的值

时间:2016-11-01 16:37:15

标签: c++ chrono

每当我调用此函数时,我试图在浮点数中将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帖子1955512116177295,但时间戳的值仍然保持不变。

1 个答案:

答案 0 :(得分:6)

float的精确度不足以在这里做你想做的事。自1970-01-01以来的当前毫秒数约为1,478,020,169,728。此后float中的下一个可表示值为1,478,020,300,800。那是大约131s(2分钟)。

double会在这里做。