C++ 均值和中值绝对偏差返回相同的奇怪符号

标签 c++ runtime notation

我正在研究两个函数来计算 vector 数据集的平均绝对偏差和中值绝对偏差。我在其中使用了一个重载的 calcAverage 函数。问题是,我为两个函数调用返回了相同的错误值。

这是输出。它是给我科学记数法还是什么?

Mean absolute deviation = 4.09929e-016
Median absolute deviation = 4.09929e-016

这是平均绝对分布函数:

double calcMeanAD(vector<int> data_set){

vector<double> lessMean;
double mean = calcAverage(data_set);

for (auto it = data_set.begin(); it != data_set.end(); ++it){
    lessMean.push_back(*it);
}

for (auto it = lessMean.begin(); it != lessMean.end(); ++it){
    *it -= mean;
}

return calcAverage(lessMean);

}

这是中位数绝对分布函数:

double calcMedAD(vector<int> data_set){

vector<double> lessMed;
double median = calcAverage(data_set);

for (auto it = data_set.begin(); it != data_set.end(); ++it){
    lessMed.push_back(static_cast<double>(*it));
}

for (auto it = lessMed.begin(); it != lessMed.end(); ++it){
    *it -= median;
}

return calcAverage(lessMed);

}

任何人都可以发现错误的地方吗?谢谢。

最佳答案

这两个函数都返回零并带有一些舍入误差。

写下您要计算的值的代数表达式,并将其与您的代码进行比较。

我不知道 calcAverage 做了什么,但它没有重载;你用 vector<double> 来调用它两次。它无法同时计算平均值和中位数。

提示:你似乎忽略了绝对中位数的含义

关于C++ 均值和中值绝对偏差返回相同的奇怪符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21792541/

相关文章:

c++ - 删除 Windows 库依赖项

java - 使用 Java 的 Runtime.exec() 时如何添加超时值?

python - pandas/json 中的点表示法

c# - 具有固定指数 C# 的科学记数法的双重值(value)

c++ - 如何使用 uniform_int_distribution 作为构造函数中的类字段

c++ - 返回 shared_ptr<> 的成员函数的 const 正确性

C++ - 我怎样才能对 bmp 文件做一些操作?

Excel VBA 运行时错误 '424' : Object Required when trying to copy TextBox

c++ - 如何获取设置的输入文件路径运行时?

javascript - 使用括号表示法在对象内部调用函数