相同数字的计算结果奇怪

时间:2017-09-14 14:14:02

标签: c++

我有以下代码(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);

aa2返回完全不同的数字。 a约为0.02,a2为-3.6e-5,这是正确的

为什么会这样?

1 个答案:

答案 0 :(得分:0)

感谢@SirDarius:vector :: size()返回一个size_type类型的值,通常应该是无符号值,而int是有符号值,这两行完全不同。使用size_t初始化n后,现在一切正常。