时间戳差为两个小数C



i必须到时间戳(以µs为单位(,将其存储为uint64_t。我的目标是能够在MS中获得这些时间戳之间的区别,作为带有2个小数的浮子。

fx我希望结果为6.520000 ms。虽然我似乎无法让他们正确地铸造。

我尝试了以下操作,没有任何运气:

uint64_t diffus = ms.getT1 - ms.getT2
float diff = static_cast<float>(diffus);
float diffMS = diff / 1000;
std::cout << diffMS << " ms" << std::endl;

我知道这不会使浮子只有两个小数,但我什至无法正常工作。即使我用

改变了T1和T2,我似乎一直都会得到相同的结果
srand(time(NULL));
usleep((rand() % 25) * 1000);

输出一直是:

1.84467e+16 ms
1.84467e+16 ms
1.84467e+16 ms
1.84467e+16 ms

发生了什么,我该怎么办?: - (

最好的问候。

我假设Ms.gett1和Ms.gett2表示T1比T2早。

在那种情况下,您正在为浮动施放一个负数,而第一个位可能是为了您的期望而被错误地解释。

以下测试证实了我的假设:

// Force diffus to be a negative number.
uint64_t diffus = 20 - 30;
float diff = static_cast<float>(diffus);
float diffMS = diff / 1000;
std::cout << diffMS << " ms" << std::endl;
// Result of casting negative integer to float.
1.84467e+16 ms
// Force diffus to be a positive number.
uint64_t diffus = 30 - 20;
float diff = static_cast<float>(diffus);
float diffMS = diff / 1000;
std::cout << diffMS << " ms" << std::endl;
// Result of casting positive integer to float.
0.01 ms

浮点通常是32位编号,因此请考虑为进一步应用程序这样做的后果...

uint64_t diffus = ms.getT1 - ms.getT2
float diff = static_cast<float>(diffus);

另一方面,浮点数可以通过几种方式表示。(例如,科学符号(,这仅是关于数字的外观,而不是关于数字所持的。

3.1
3.14
3.14159

可能是根据应用程序的需求以差异格式打印的同一PI编号...

如果您的问题是关于浮点数的表示形式,请考虑设置Cout对象的精度: std :: cout.precision.precision 在这里更多信息

std::cout.precision(2);
std::cout << diffMS << " ms" << std::endl;

相关内容

  • 没有找到相关文章

最新更新