【发布时间】:2023-04-02 14:05:01
【问题描述】:
我正在创建一个简单的计时器类,它会返回我,例如以毫秒为单位的当前时间。在 linux 上,我使用 gettimeofday。我想知道这个函数应该有什么返回类型。 IE。
double getMillis() 或 uint64_t getMillis() 等...我会说 uint64_t 可以容纳更大的值,因此建议使用,尽管在谷歌搜索时我看到了很多不同的实现。
对此有何建议?
谢谢
【问题讨论】:
-
uint64_t可以容纳比double更大的值???double可能(或可能不会)导致精度问题,但它肯定可以保持比uint64_t更大的值。 -
Grizzly,如果我没记错的话,它们都是 8 字节,但是 double 是有符号的 + 实数。
-
在 C++11 中,我们有
头文件。你可以做 auto time = std::chrono::system_clock::now().time_since_epoch().count();。返回的类型是std::chrono::system_clock::rep。不需要特定于平台的代码。 -
您可能想看看what every computer scientist should know about floating point。
double具有大约 17 位的精度,但可以将值编码到 10^300 或类似的值(当然是无穷大)
标签: c++ types timer milliseconds