C++ GETTimeFay.d()返回相同的值

C++ GETTimeFay.d()返回相同的值,c++,c,time,gettimeofday,C++,C,Time,Gettimeofday,为什么不规则地显示相同的时间?Ubuntu 64位与C++的编译 还有哪些标准方法可以生成毫秒精度的unix时间戳?似乎float没有足够的精度,用double代替,现在一切都好了 /* * Returns time in s.usec */ float mtime() { struct timeval stime; gettimeofday(&stime,0x0); return (float)stime.tv_sec+((float)stime.tv_us

为什么不规则地显示相同的时间?Ubuntu 64位与C++的编译
还有哪些标准方法可以生成毫秒精度的unix时间戳?

似乎float没有足够的精度,用double代替,现在一切都好了

/*
 * Returns time in s.usec
 */
float mtime()
{
    struct timeval stime;
    gettimeofday(&stime,0x0);
    return (float)stime.tv_sec+((float)stime.tv_usec)/1000000000;
}

main(){
    while(true){
        cout<<setprecision(15)<<mtime()<<endl;
        // shows the same time irregularly for some reason and can mess up triggers
        usleep(500000);
    }
}
仍然不完全理解随机行为的原因。。。
另外,我捕获了一个mtime,并将其与当前时间进行比较,以获得持续时间

似乎float没有足够的精度,用double代替,现在一切都好了

/*
 * Returns time in s.usec
 */
float mtime()
{
    struct timeval stime;
    gettimeofday(&stime,0x0);
    return (float)stime.tv_sec+((float)stime.tv_usec)/1000000000;
}

main(){
    while(true){
        cout<<setprecision(15)<<mtime()<<endl;
        // shows the same time irregularly for some reason and can mess up triggers
        usleep(500000);
    }
}
仍然不完全理解随机行为的原因。。。 另外,我捕获了一个mtime,并将其与当前时间进行比较,以获得持续时间

一个浮点数有两个

所以当我写这篇文章时,如果整数部分是1391432494 UNIX时间;需要10位数,小数部分的位数已经用完了。不太好,这就是为什么float在这方面失败的原因

跳转到这样似乎就足够了,只要您可以假设整数部分是UNIX时间戳,即自1970年以来的秒数,因为这意味着它不太可能在短时间内大量使用更多的数字。

所以当我写这篇文章时,如果整数部分是1391432494 UNIX时间;需要10位数,小数部分的位数已经用完了。不太好,这就是为什么float在这方面失败的原因


跳到这样似乎就足够了,只要您可以假设整数部分是UNIX时间戳,即自1970年以来的秒数,因为这意味着它不太可能在短时间内使用大量的数字。

那么这意味着1391432494将被视为1391432,49?还是会从一开始就循环?从我的实验来看,它似乎保持锁定超过10秒。不,基本上,整数的较高精度将映射到浮点中一组较小的可表示数字。这就是为什么在整数移动到足以使其浮点数表示落在新数字上之前,浮点数不会改变的原因。@clickstefan请阅读。这意味着1391432494将被视为1391432,49?还是会从一开始就循环?从我的实验来看,它似乎保持锁定超过10秒。不,基本上,整数的较高精度将映射到浮点中一组较小的可表示数字。这就是为什么在整数移动到足以使其浮点数表示落在新数字上之前,浮点数不会改变的原因。@clickstefan请阅读。我在返回时使用:。关于为什么不在微秒内返回到程序,我还使用时间进行不太精确的测量,并且在整个程序中有选项变量设置为秒,并且将它们全部乘以1000000可能会导致问题。我在返回时使用:。关于为什么不在微秒内返回到程序,我还使用时间进行不太精确的测量,并且在整个程序中有选项变量设置为秒,并且将它们全部乘以1000000可能会导致问题。