为什么这个正双的绝对值等于零?

时间:2015-04-01 21:41:31

标签: c++ floating-point c-standard-library

我有一个vector <vector <double> >的功能。在某些时候我想在比较中使用元素的绝对值,并且我得到了错误的行为,所以我放入以下调试行:

std::cout << M[3][2] << " " << abs(M[3][2]) << "\n";

令人惊讶的是,输出是:

0.667 0

为什么会这样?

1 个答案:

答案 0 :(得分:8)

您可能正在调用abs<stdlib.h>中定义的<cstdlib> #include <cmath>之一,因此您的参数会被截断。

您应该{{1}}选择integral overloads