相同数字计算的怪异结果差异

Weird result difference in calculation with same numbers

本文关键字:结果 数字 计算      更新时间:2023-10-16

i具有以下代码( m_threshold(in Interval [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,是正确的一个

为什么会发生这种情况?

感谢@sirdarius:vector :: size()返回类型size_type的值,该值通常是无符号值,而int是签名值,使两行完全不同。使用size_t初始化n后,现在一切都可以。