gpt4 book ai didi

c++ - 将存储在 int64_t 中的系统时钟(微秒)转换为 float ?

转载 作者:太空狗 更新时间:2023-10-29 23:54:09 25 4
gpt4 key购买 nike

目前我有一个函数 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com