我有以下代码(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,这是正确的
为什么会这样?
答案 0 :(得分:0)
感谢@SirDarius:vector :: size()返回一个size_type类型的值,通常应该是无符号值,而int是有符号值,这两行完全不同。使用size_t初始化n后,现在一切正常。