Java中计算两点距离应使用Math.sqrt(dxdx+dydy)而非Math.pow,二维、三维及多维同理,需校验NaN和无穷大输入。

Java 中计算两点间距离,可以用 Math.sqrt() 对距离的平方和开平方,这是最直接的方式。
用 Math.sqrt 计算二维点到点距离
平面上两点 (x1, y1) 和 (x2, y2) 的欧氏距离公式是:√[(x2−x1)² + (y2−y1)²]。
Java 中用 Math.sqrt() 就是把括号里的平方和作为参数传进去:
double dx = x2 - x1; double dy = y2 - y1; double distance = Math.sqrt(dx * dx + dy * dy);
避免手动写 Math.pow(x, 2) 做平方
Math.pow(x, 2) 开销比直接乘大,且引入浮点误差风险略高。推荐用 x * x 替代:
- ✅ 推荐:
dx * dx + dy * dy - ❌ 不必要:
Math.pow(dx, 2) + Math.pow(dy, 2)
处理三维或更高维的情况
三维点 (x1,y1,z1) 到 (x2,y2,z2) 同理,加一项 dz * dz 即可:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
double dz = z2 - z1; double distance = Math.sqrt(dx * dx + dy * dy + dz * dz);
多维时可用循环累加各维度差值的平方,最后统一开方。
立即学习“Java免费学习笔记(深入)”;
注意 null 或 NaN 输入(边界情况)
Math.sqrt() 遇到负数会返回 NaN,所以确保平方和 ≥ 0(正常计算下恒成立)。但若坐标本身是 NaN 或无穷大,结果也会是 NaN。必要时可加简单校验:
- 用
Double.isFinite()检查输入坐标是否有效 - 开方前判断平方和是否为正数(虽极少发生,但对接外部数据时更稳妥)

















