0
我有以下代码(m_threshold
(在区间[0..1])和binSize
(= 1000)是常数):怪异的结果差
std::vector<std::vector<ResidualEntry>> *bins = new std::vector<std::vector<ResidualEntry>>;
... //filling vector
int n = bins->size(); //is 27779
double a = -(2 * (n * binSize - m_threshold * pointCount))/((n * n + n) * binSize);
double a2 = -(2 * (bins->size() * binSize - m_threshold * pointCount))/((bins->size() * bins->size() + bins->size()) * binSize);
a
和a2
返回完全不同的数字。 a
约为0.02,a2
为-3.6e-5,这是正确的
为什么会发生这种情况?
请创建一个[mcve]。在帮助中:_“寻求调试帮助的问题(”为什么这个代码不工作?“)必须包含所需的行为,特定的问题或错误以及在问题本身中重现问题所需的最短代码。”_ –
It很高兴知道'binSize','m_threshold'和'pointCount'的类型。 – Bernard
请检查您的等式*整数除法*。 *整数除法*截断结果。尝试在等式'double'中创建常量和变量。 –