【问题标题】:Precision of std::chrono::duration<double> and double - C++std::chrono::duration<double> 和 double 的精度 - C++
【发布时间】:2017-09-25 06:30:14
【问题描述】:

我已将算法的持续时间存储在 std::chrono::duration&lt;double&gt; 变量中,并且我想重复实验几次(比如说 3 次),因此我想将三个持续时间存储在一个向量中以计算平均值。

我使用双精度向量(存储time.count())。

持续时间或多或少,

0.003,

0.004,

0.003

当我计算平均值时(使用双精度),结果为 0。

在计算平均值时是否有更高的精度?

【问题讨论】:

标签: c++ c++11 double mean chrono


【解决方案1】:

您需要在向量中进行循环,以便计算平均值。

double sum = 0;
//define 3 duration objects and initialize it later
std::chrono::duration<double> a(0.003);
std::chrono::duration<double> b(0.004);
std::chrono::duration<double> c(0.003);
//define a vector of durations
std::vector<std::chrono::duration<double>> times{a, b, c};
//calcuöate the sum of all element in vector
for (auto x : times)
{
    sum += x.count();
}
//calculate mean as double 
double mean = sum / times.size(); 

std::cout << "Mean Duration: " << mean  <<std::endl;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    相关资源
    最近更新 更多