相同数字计算的怪异结果差异
Weird result difference in calculation with same numbers
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);
a
和a2
返回完全不同的数字。a
约为0.02,a2
为-3.6e -5,是正确的一个
为什么会发生这种情况?
感谢@sirdarius:vector :: size()返回类型size_type的值,该值通常是无符号值,而int是签名值,使两行完全不同。使用size_t初始化n后,现在一切都可以。
相关文章:
- C++ 检查结果数组中有多少次数字
- Spirit X3:自定义数字解析器在结果中产生意外的前导零
- 如果一个字符,比如说"9",我减去"0",我在结果上使用 is 数字,我是真还是假
- 递归推动POP POSTFIX计算器无法正确执行操作,只需将最后一个数字作为结果
- 编写二进制数字时出乎意料的结果[C ]
- 将零附加到数字时,无符号数字会显示不同的结果
- 检查数字在C 中未返回正确结果的功能
- 对 3 个数字进行排序会产生奇怪的结果 (C++)
- C++,打开和编辑文本文件中的数字数据,并将结果放入新文件中
- C++ 尝试将数字右移 32 会得到两种不同的结果
- 测试结果乘加减除法可能为一组数字
- 为什么当我将 tolower() 的结果流式传输到 std::cout 时我会得到一个数字,而当我使用 putchar(
- 相同数字计算的怪异结果差异
- C++:输出文件中ASCII字符计数频率的结果时出现的奇怪数字
- 我有n个空格,在每个空格中,我可以放置一个数字0到m.编写一个程序来输出所有可能的结果.需要帮助:)
- 将 rand() 结果写入 C++ 文本文件,而不重复数字
- visual c++中,没有编译器优化的数字代码会给出错误的结果
- 查找数字的因子.没有得到准确的结果
- 打印浮点数字4.5e-45f、4.8e-45f和5.1e-45f会返回奇怪的结果
- Tesseract API,白名单设置为数字,但结果中会出现字母