目前我有一个函数 f(),它以微秒为单位返回当前系统时钟。我需要将它转换为秒,在小数点后保留几位数字。我想将结果存储在一个 float 中(它足够长吗?)。
但是f()返回的是一个int64_t变量;我尝试了很多方法,例如:
(double)(f() / 1000000) + (double)((f() % 1000000) / (double)1000000);
和:
f() / 100000.f
但我得到的实际上看起来像“1318395904.000000”。
更新:
我想做的是计算我的程序的 FPS。似乎将其转换为第二优先是一个坏主意。我这样重写了我的程序,这两种方法都很好用:
(PS,av_gettime()就是我提到的函数f()。)
std::cout << "Yoooooo FPS: " << (float)5000000 / (float)(av_gettime() - prevFrameShowTime)
<< std::endl;
std::cout << "Current FPS: " << (double)5000000 / (double)(av_gettime() - prevFrameShowTime)
<< std::endl;
这是输出:
Yoooooo FPS: 60.623
Current FPS: 60.6097
最佳答案
您的 float 有(假设 IEEE-754)23 位尾数,您如何期望在其中存储 64 位值而不丢失精度?
(你显示的值需要31位来存储整秒,你的精度只到最近的128秒)
关于c++ - 将存储在 int64_t 中的系统时钟(微秒)转换为 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7735608/