如何使用 Math.hypot() 函数计算两点间距离避免溢出?

2026-05-03 01:582阅读0评论SEO基础
  • 内容介绍
  • 相关推荐

本文共计531个文字,预计阅读时间需要3分钟。

如何使用 Math.hypot() 函数计算两点间距离避免溢出?

`Math.hypot(x, y)` 是 JavaScript 中专门用于计算欧几里得距离的函数,它能安全地处理大数值,避免因为使用 `x * x + y * y` 或 `y * y + x * x` 等中间平方运算导致的数值溢出问题(例如 `Infinity`)。

为什么普通平方和开方容易溢出

直接写 Math.sqrt(x*x + y*y) 时,若 xy 很大(例如接近 1e200),x * x 就会超出 Number.MAX_VALUE(约 1.8e308),结果变成 Infinity,最终距离也变成 Infinity,即使真实结果仍在可表示范围内。

Math.hypot() 内部采用缩放算法:先找出最大绝对值项,再将所有参数按比例缩小后计算,最后还原结果,从而全程避开大数平方。

阅读全文

本文共计531个文字,预计阅读时间需要3分钟。

如何使用 Math.hypot() 函数计算两点间距离避免溢出?

`Math.hypot(x, y)` 是 JavaScript 中专门用于计算欧几里得距离的函数,它能安全地处理大数值,避免因为使用 `x * x + y * y` 或 `y * y + x * x` 等中间平方运算导致的数值溢出问题(例如 `Infinity`)。

为什么普通平方和开方容易溢出

直接写 Math.sqrt(x*x + y*y) 时,若 xy 很大(例如接近 1e200),x * x 就会超出 Number.MAX_VALUE(约 1.8e308),结果变成 Infinity,最终距离也变成 Infinity,即使真实结果仍在可表示范围内。

Math.hypot() 内部采用缩放算法:先找出最大绝对值项,再将所有参数按比例缩小后计算,最后还原结果,从而全程避开大数平方。

阅读全文