<分区>
这个问题从根本上归结为 2 行,第 1 行将输出 1。
std::cout << sqrt(pow(b->x - a->x, 2) + pow(b->y - a->y, 2) + pow(b->z - a->z, 2)) << std::endl;
可是第二行会输出0,这怎么可能?
std::cout << (sqrt(pow(b->x - a->x, 2) + pow(b->y - a->y, 2) + pow(b->z - a->z, 2)) == 1) << std::endl;
最小的完整可验证示例:
struct vertice {
double x, y, z;
vertice(double x, double y, double z) {
this->x = x;
this->y = y;
this->z = z;
}
};
void cartDistance(const vertice * a, const vertice * b);
int main() {
cartDistance(new vertice(0, 0, 0), new vertice(0, 0, 1));
system("pause");
return 0;
}
void cartDistance(const vertice * a, const vertice * b) {
std::cout << "dist: " << sqrt(pow(b->x - a->x, 2) + pow(b->y - a->y, 2) + pow(b->z - a->z, 2)) << std::endl;
std::cout << "dist check: " << (sqrt(pow(b->x - a->x, 2) + pow(b->y - a->y, 2) + pow(b->z - a->z, 2)) == 1) << std::endl;
}