0

所以我有我的双倍计算距离

    double calculate2DDistance(int x1, int y1, int x2, int y2)
{
    return sqrt((x2 - x1)^2 + (y2 - y1)^2);
}

注意我从一个名为 math.h 的头文件中调用这个方法到我的 main

我在 main.h 中的测试线

cout << calculate2DDistance(2.0, 4.0, 3.0, 1.0) << endl;

它要么打印出完全错误的答案,要么打印出-1.#IND

这是怎么回事 ?

4

1 回答 1

6

在 C++ 中,^运算符表示按位异或。

要将数字提升为幂,请使用std::pow

return sqrt(std::pow(x2 - x1, 2) + std::pow(y2 - y1, 2));

或者,在您的情况下(仅平方),仅使用乘法会更有效:

const int dx = x2 - x1;
const int dy = y2 - y1;
return sqrt((dx * dx) + (dy * dy));
于 2013-08-24T22:04:29.083 回答