【问题标题】:Creating a Timer class, what data type should I use to hold values? (C/C++)创建一个 Timer 类,我应该使用什么数据类型来保存值? (C/C++)
【发布时间】: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 pointdouble 具有大约 17 位的精度,但可以将值编码到 10^300 或类似的值(当然是无穷大)

标签: c++ types timer milliseconds


【解决方案1】:

我推荐的以毫秒为单位保存绝对时间戳的数据类型是 int64_t,主要是因为 time_t 是有符号的。

【讨论】:

    【解决方案2】:

    我会选择无符号整数类型,因为毫秒数是一个计数。使加法和减法在没有浮点数的情况下也可靠。我使用的大多数实现都有无符号整数类型。

    【讨论】:

      猜你喜欢
      • 2010-12-23
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 2011-01-12
      • 2019-07-08
      • 1970-01-01
      • 2017-04-14
      • 2017-05-01
      相关资源
      最近更新 更多